spring boot 自动跳转登录页面_SpringBoot2.0实战(24)整合SpringSecurity之最简登录方法鉴权...

00c97032181449ebac4beb0f18873619

目标

整合 SpringSecurity 实现最简登陆鉴权及方法鉴权,大致理解 SpringSecurity 的功用。

操作步骤

添加依赖

引入 Spring Boot Starter 父工程

25ba272435c14ac4b3bea14458a4c32f

添加 springSecurity 的依赖

6b2dcb6fbecc40ee9d0d9afb902521dc

添加后的整体依赖如下

4282fde43bbb4b6091d01b9ddc81442d

编码

Controller 层

添加一个最简单的测试接口

eb1853cc62534e529f5471dd07c7f690

启动类

9376e924a4324bb59666369da93d42d5

可以看到,除了在 pom 文件加了一个 spring-boot-starter-security 依赖,其它跟创建最简 springBoot 应用没有区别。

最简初体验

最简体验就是什么都不做,直接体验,启动应用,查看日志,可以看到有一行比较特殊

96f91f379ffa441a82c15691f4d7c5e2

通过网页访问 http://localhost:8080/hello 地址,原本页面应该显示 hello world 字样,但实际有所偏差,页面被自动跳转至 http://localhost:8080/login,而且出现一个很丑的登录界面,这个不重要,重要的是我们的访问被阻止了,被 SpringSecurity 要求登录。

SpringSecurity 默认提供了一个用户名称叫 user,密码就是上面提到的日志里打印出来的,从格式看应该是一个 UUID。输入用户名密码进行登录,我们终于看到了 hello world,这就是 SpringSecurity 最简初体验。

配置用户名密码

配置用户名,密码,角色,配置过后,重启应用,日志中将不会再有生成密码那一行。

dd474ca0e1fa4622831dd059b5694c77

添加方法权限验证

注册

在启动类上添加 @EnableGlobalMethodSecurity 注解,用于开启方法权限验证,该注解有三个参数

  • securedEnabled:开启 @Secured 注解

用法:

  1. 单个角色:@Secured(“ROLE_USER”)
  2. 多个角色任意一个:@Secured({“ROLE_USER”,“ROLE_ADMIN”})
  • prePostEnabled:开启 @PreAuthorize 及 @PostAuthorize 注解,分别适用于进入方法前后进行鉴权,支持表达式

用法:

  1. 允许所有访问:@PreAuthorize(“true”)
  2. 拒绝所有访问:@PreAuthorize(“false”)
  3. 单个角色:@PreAuthorize(“hasRole(‘ROLE_USER’)”)
  4. 多个角色与条件:@PreAuthorize(“hasRole(‘ROLE_USER’) AND hasRole(‘ROLE_ADMIN’)”)
  5. 多个角色或条件:@PreAuthorize(“hasRole(‘ROLE_USER’) OR hasRole(‘ROLE_ADMIN’)”)
  • jsr250Enabled:开启 JSR-250 相关注解

用法:

  1. 允许所有访问:@PermitAll
  2. 拒绝所有访问:@DenyAll
  3. 多个角色任意一个:@RolesAllowed({“ROLE_USER”, “ROLE_ADMIN”})
db0b302ba0c14f2f8a32cc6dd503ba24

验证

编写 Service 并为每个方法添加权限注解

c2902051cf934d1d8703964bb709d15d

执行测试用例

293856cf31f34e9f97060b53c5067664

使用编码的方式进行配置

SpringSecurity 提供了一个 WebSecurityConfigurerAdapter 配置类,此类有三个重要的方法可供继承

  • configure(AuthenticationManagerBuilder auth)配置在内存中进行注册公开内存的身份验证
  • configure(WebSecurity web)配置拦截资源,例如过滤掉css/js/images等静态资源
  • configure(HttpSecurity http)定义需要拦截的URL

本例,我们重写 configure(AuthenticationManagerBuilder auth) 方法,在内存中添加两个用户。

使用了编码的方式进行配置后,在配置文件中配置的用户将失效。

17c99910496f4560a28548c198ab859a

源码地址

本章源码 : https://gitee.com/gongm_24/spring-boot-tutorial.git

结束语

SpringSecurity 与 Shiro 是两个最常用的权限框架,SpringSecurity 因为是 Spring 全家桶中的一员,所以在与 Spring 的集成方面会更好一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值