SpringBoot使用SpringSecurity
2021-07-07 本文已影响0人
Kylin824
目的:验证请求用户的身份,提供安全访问
优势:基于Spring,配置方便,减少大量代码
一、SpringBoot中应用Spring Security
- 在SpringBoot项目的pom中配置Spring Security:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
- 启动项目:
控制台会输出一个由SpringSecurity自动生成的密码(用户名默认为 user ): -
访问任一项目路径会弹出用户验证界面:
填入用户名和密码,验证成功。
由此可见SpringBoot已经为用户采用默认配置,只需要引入pom依赖就能快速启动Spring Security。
然而默认配置每次都启动项目都会重新生成密码,同时用户名和拦截请求也不能自定义,在实际应用中往往需要自定义配置,因此接下来对Spring Security进行自定义配置。
二、SpringBoot中配置Spring Security
目标:配置两个用户角色(Admin和User),设置不同密码(存储在内存中);同时设置角色访问权限,其中Admin可以访问所有路径(即/*),User只能访问/user下的所有路径。
-
自定义配置类,实现WebSecurityConfigurerAdapter接口,WebSecurityConfigurerAdapter接口中有两个用到的 configure()方法,其中一个配置用户身份,另一个配置用户权限:
1.1 配置用户身份的configure()方法:
注释:- inMemoryAuthentication()表示将用户名和密码存在内存中,也可以存在数据库或redis等缓存中
- passwordEncoder用于对密码进行加密
- roles是给予该用户的后台角色,用于下面的用户权限配置。
注释:
- antMatchers()配置拦截的路径
- hasAnyRole()配置哪类角色可以访问该路径
- formLogin()配置登录界面,可以添加自定义界面, 没添加则用系统默认的界面。
再次启动项目便可实现两个用户名(admin,user)登录,同时两类用户(Admin,User)有不同访问权限的效果。