Spring Boot整合Spring Security

   日期:2024-12-26    作者:5avo7 移动:http://ljhr2012.riyuangf.com/mobile/quote/27467.html

Spring Security是针对Spring项目的安全框架,也是Spring Boot底层安全模块的默认技术选型,仅需引入spring-boot-starter-security模块,进行少量配置,即可实现强大的Web安全控制。

Spring Security的两个主要目标是认证授权(访问控制

官方文档:https://docs.spring.io/spring-security/site/docs/5.2.0.RELEASE/reference/htmlsingle/

  • JDK:1.8
  • Spring Boot:2.7.18

Spring Boot 版本升级为2.7.18,专栏中其他Spring Boot相关环境同步升级

 
 
 
 
 

启动服务,浏览器访问 127.0.0.1:8090/user/query,页面自动跳转到授权登录页

默认用户名为user,控制台上会打印默认密码,默认密码每次启动服务都会刷新

登录成功后,就可以正常访问了

该部分会使用到Spring Security的几个关键类,如下

  • WebSecurityConfigurerAdapter 自定义Security策略
  • AuthenticationManagerBuilder 自定义认证策略
  • @EnableWebSecurity 开启WebSecurity模式
 
 
 
 

3.3.1 编写UserDetailsService实现类

这里我们就直接固定写死用户名和密码,实际生产中可以从数据库中获取

 

3.3.2 编写配置类

 

分别测试,都通过

实际生产中,需要根据用户角色的权限来控制可访问的页面、可执行的操作等

level-1.html

 

level-2.html

 

level-3.html

 

index.html

 
 
 

**hasRole()hasAuthority()**用法是类似的,只不过hasRole()方法会给自定义的角色名前加上 ROLE_ 前缀

因此在自定义用户时,如果使用**authorities()给用户设置角色时,需要自行添加上ROLE_**前缀。

roles()authorities()设置的角色或权限,最终都存放在authorities参数中,且这两个方法会互相覆盖彼此的值。

浏览器访问

依次点击等级1、等级2、等级3,均自动跳转到授权登录页面,登录对应权限的用户后,可成功访问。

其中,登录admin用户,无法访问任何页面,登录admin0,可访问所有页面

登录权限不匹配的用户,拒绝访问

UserDetailsServiceImpl

 

SecurityConfig

 

浏览器访问,测试,通过

可控制用户认证访问接口

校验用户具有某个角色,才可访问接口

需在启动类开启注解

 

然后在接口方法上配置注解

 
 

在进入方法前校验用户具有某个权限或角色

需在启动类开启注解

 

然后在接口方法上配置注解

 
 

在进入方法后校验用户具有某个权限或角色

需在启动类开启注解

 

然后在接口方法上配置注解

 
 

校验权限后对数据进行过滤,只返回满足条件的数据

新建实体类

 

然后在方法上加上注解

 

测试,权限验证通过后

校验权限后对数据进行过滤,只有满足条件的数据才能传入接口方法中

 

测试,权限验证通过后

配置类中开启记住我

 

启动服务,访问页面,登录页面增加了记住我选择框

登录成功后,cookie中已保存用户信息,默认时间为2周

 
 
 

其他两个页面做相同修改

启动服务,登录成功后点击注销按钮,注销成功,返回首页,访问页面需再次登录

 
 
 

这里,自定义登录,默认用户参数是username,默认密码参数是password,默认记住我参数是remember-me,如果需要自定义登录表单的参数,做如下修改

 

启动服务,访问地址,跳转到自定义登录页

 
 
 

启动服务,浏览器访问,登录无权限用户后提示


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号