当前位置:网站首页 > R语言数据分析 > 正文

druid监控页面登录(druid监控页面登录弱口令申诉理由)



Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。

一般来说中大型的项目都是使用SpringSecurity 来做安全框架。
小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。

一般Web应用的需要进行和。

  • 认证:这个人是不是我们公司
  • 授权:这个人什么职位,进而确定 活动范围的楼层

而认证和授权也是SpringSecurity作为安全框架的核心功能。

1.1 准备工作

我们先要搭建一个简单的SpringBoot工程

① 设置父工程 添加依赖

 
  

② 创建启动类

 
  

③ 创建Controller

 
  

1.2 引入SpringSecurity

在SpringBoot项目中使用SpringSecurity我们只需要引入依赖即可实现入门案例。

 
  

2.1 登陆校验流程

在这里插入图片描述

2.2 原理初探

想要知道如何实现自己的登陆流程就必须要先知道入门案例中SpringSecurity的流程。

2.2.1 SpringSecurity完整流程

SpringSecurity的原理其实就是一个 ,内部包含了提供 各种功能 的 过滤器。
这里我们可以看看入门案例中的过滤器:
在这里插入图片描述

图中只展示了 核心过滤器,其它的非核心过滤器并没有在图中展示。

UsernamePasswordAuthenticationFilter:负责处理我们在登陆页面填写了 用户名 密码 后的登陆请求。入门案例的认证工作主要有它负责。

ExceptionTranslationFilter: 负责处理 过滤器链 中抛出的任何 AccessDeniedException 和 AuthenticationException 。

FilterSecurityInterceptor: 负责 权限校验 的过滤器。

我们可以通过Debug查看当前系统中SpringSecurity过滤器链中有哪些过滤器及它们的顺序。

2.3 认证实现

2.3.1 思路分析
登录

①自定义登录接口

调用 ProviderManager 的方法进行认证 如果认证通过生成jwt 把用户信息存入redis中

②自定义UserDetailsService

在这个实现类中去 查询数据库

校验

①定义Jwt认证过滤器

获取token

解析token获取其中的userid

从redis中获取用户信息

存入SecurityContextHolder

2.3.2 准备工作

①添加依赖

 
  

② 添加Redis相关配置

 
  
 
  

③ 响应类

 
  

④工具类

 
  
 
  
 
  

⑤实体类

 
  
2.3.3 实现
2.3.3.1 数据库校验用户

从之前的分析我们可以知道,我们可以自定义一个UserDetailsService,让SpringSecurity使用我们的UserDetailsService。我们自己的UserDetailsService可以从数据库中查询用户名和密码。

准备工作

我们先创建一个用户表, 建表语句如下:

 
  

引入MybatisPuls和mysql驱动的依赖

 
  

配置数据库信息

 
  

定义Mapper接口

 
  

修改User实体类

 
  

配置Mapper扫描

 
  

添加junit依赖

 
  

测试MP (MybatisPlus) 是否能正常使用

 
  
核心代码实现
 
  

因为UserDetailsService方法的返回值是 UserDetails类型,所以需要定义一个类,实现该接口,把用户信息封装在其中。

 
  

注意:如果要测试,需要往用户表中写入用户数据,并且如果你想让用户的密码是明文存储,需要在密码前加 。例如
在这里插入图片描述

这样登陆的时候就可以用sg作为用户名,1234作为密码来登陆了。

2.3.3.2 密码加密存储

实际项目中我们不会把密码明文存储在数据库中。

默认使用的 PasswordEncoder 要求数据库中的密码格式为:{id}password 。它会根据id去判断密码的加密方式。但是我们一般不会采用这种方式。所以就需要替换PasswordEncoder。

我们一般使用SpringSecurity为我们提供的 。

我们只需要使用把 BCryptPasswordEncoder 对象注入 Spring容器 中,SpringSecurity就会使用该PasswordEncoder来进行密码校验。

我们可以定义一个SpringSecurity的配置类,SpringSecurity要求这个配置类要继承WebSecurityConfigurerAdapter。

 
  
2.3.3.3 登陆接口

接下我们需要自定义登陆接口,然后让 SpringSecurity 对这个接口放行

 
  

更改 上面我们 自定义SpringSecurity的配置类:

 
  
 
  
2.3.3.4 认证过滤器

我们需要自定义一个过滤器,这个过滤器会去获取请求头中的token,对token进行解析取出其中的userid。

使用userid去redis中获取对应的LoginUser对象。

然后封装Authentication对象存入SecurityContextHolder

 
  
 
  
2.3.3.5 退出登陆

只需 获取SecurityContextHolder中的认证信息,删除redis中对应的数据即可。

 
  

3.0 权限系统的作用

总的来说就是不同的用户可以使用不同的功能。这就是权限系统要去实现的效果。

我们不能只依赖前端去判断用户的权限来选择显示哪些菜单哪些按钮。因为如果只是这样,如果有人知道了对应功能的接口地址就可以不通过前端,直接去发送请求来实现相关功能操作

3.1 授权基本流程

3.2 授权实现

3.2.1 限制访问资源所需权限

但是要使用它我们需要先 开启相关配置。

 
  

然后就可以使用对应的注解。@PreAuthorize

 
  
3.2.2 封装权限信息

我们前面在写 UserDetailsServiceImpl 的时候说过,在查询出用户后还要获取对应的 权限信息,封装到UserDetails 中返回。

我们先直接把权限信息 wtt 写死封装到UserDetails中进行测试。

我们之前定义了UserDetails的实现类 LoginUser,想要让其能 封装权限信息 就要对其进行修改。

 
  

LoginUser修改完后我们就可以在 UserDetailsServiceImpl 中去把权限信息封装到 LoginUser 中了。我们写死权限进行测试,后面我们再从数据库中查询权限信息。

 
  
3.2.3 从数据库查询权限信息
3.2.3.1 RBAC权限模型

RBAC权限模型(Role-Based Access Control)即:基于角色的权限控制。这是目前最常被开发者使用也是相对易用、通用权限模型。

3.2.3.2 准备工作
 
  
3.2.3.3 代码实现

我们只需要根据用户id去查询到其所对应的权限信息即可。

所以我们可以先定义个mapper,其中提供一个方法可以根据userid查询权限信息。

 
  

尤其是自定义方法,所以需要创建对应的mapper文件,定义对应的sql语句

 
  

在application.yml中配置mapperXML文件的位置

 
  

然后我们可以在UserDetailsServiceImpl中去调用该mapper的方法查询权限信息封装到LoginUser对象中即可。

 
  

我们还希望在 认证失败 或者是 授权失败 的情况下也能和我们的接口一样返回相同结构的json,这样可以让前端能对响应进行统一的处理。

要实现这个功能我们需要知道SpringSecurity的

在SpringSecurity中,如果我们在 认证 或者 授权 的过程中出现了异常会被 捕获到。在ExceptionTranslationFilter 中会去判断是 认证失败 还是 授权失败 出现的异常。

如果是 认证过程 中出现的异常会被封装成 然后调用AuthenticationEntryPoint 对象的方法去进行异常处理。

如果是 授权过程 中出现的异常会被封装成 然后调用AccessDeniedHandler对象的方法去进行异常处理。

所以如果我们需要自定义异常处理,我们只需要自定义 AuthenticationEntryPoint 和 AccessDeniedHandler 然后配置给SpringSecurity即可。

①自定义实现类

 
  

②配置给SpringSecurity

先注入对应的处理器

 
  

然后我们可以使用HttpSecurity对象的方法去配置。

 
  

前后端分离项目,前端项目和后端项目一般都不是同源的,所以肯定会存在跨域请求的问题。

所以我们就要处理一下,让前端能进行跨域请求。

①先对SpringBoot配置,运行跨域请求

 
  

②开启SpringSecurity的跨域访问

由于我们的资源都会收到 SpringSecurity 的保护,所以想要跨域访问还要让 SpringSecurity 同意才行。

到此这篇druid监控页面登录(druid监控页面登录弱口令申诉理由)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就! 
  

                            

版权声明


相关文章:

  • rasie和rise的区别(raise和rises的区别)2026-03-02 13:18:04
  • prblms怎么读(prblms英文怎么读)2026-03-02 13:18:04
  • airplane(airplanechefs下载)2026-03-02 13:18:04
  • jgcontrol已停止工作(已停止工作clr20r3)2026-03-02 13:18:04
  • de4dot源码分析(delimiterbasedframedecoder源码)2026-03-02 13:18:04
  • raise a suilen(Raise a suilen演唱会)2026-03-02 13:18:04
  • qpainterpath moveto(qpainterpath moveto效率)2026-03-02 13:18:04
  • treeagepro2019破解版(treeplan破解版)2026-03-02 13:18:04
  • spring 快速入门(spring快速入门 pdf)2026-03-02 13:18:04
  • m哈是什么意思(么哈mojar什么意思)2026-03-02 13:18:04
  • 全屏图片