权限管理相关概念:
名词 | 解释 |
---|---|
主体 | 即使用系统的用户或者设备 |
认证authentication | 确认主体的身份 |
授权authorization | 系统为主体分配权限 |
SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
SpringSecurity核心功能:
- 认证:验证用户是否合法,即是否能登录
- 授权:验证用户是否有做某些 *** 作的权限
Maven依赖:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-securityartifactId>
dependency>
<dependency>
<groupId>org.springframework.securitygroupId>
<artifactId>spring-security-testartifactId>
<scope>testscope>
dependency>
添加SpringSecurity配置类:
@Configuration//配置类,继承WebSecurityConfigurerAdapter
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//重写configure(HttpSecurity http)方法
@Override
protected void configure(HttpSecurity http) throws Exception {
//登录 可以配置一些属性
http.formLogin()
.and()
//认证配置 可以配置一些无需认证的路径和指定权限的路径,后续配置
.authorizeRequests()
//任何请求都需要认证
.anyRequest().authenticated();
}
}
运行: 访问localhost:8080即可看到如下页面
- 默认的用户名为user
- 密码会在程序启动时输出在控制台
SpringSecurity本质就是过滤链:
重要的三个过滤器:
4:UserDetailsService和PasswordEncoder
- FilterSecurityInterceptor: 是一个方法级的权限过滤器, 基本位于过滤链的最底部
- ExceptionTranslationFilter: 是个异常过滤器,用来处理在认证授权过程中抛出的异常
- UsernamePasswordAuthenticationFilter : 对/login 的 POST 请求做拦截,校验表单中用户名,密码
SpringBoot对SpringSecurity的自动配置:
- 启用 Spring Security 的默认配置,它创建一个 servlet
Filter
作为一个名为springSecurityFilterChain
. 此 bean 负责应用程序中的所有安全性(保护应用程序 URL、验证提交的用户名和密码、重定向到登录表单等)。 - 创建一个
UserDetailsService
用户名为user
的bean 以及记录到控制台的随机生成的密码。 - 注册
Filter
用一个名为springSecurityFilterChain
每个请求都使用 Servlet 容器。
如果需要自定义登录用户,比如从数据库查找,那么就可以自定义类实现UserDetailsService接口即可。
PasswordEncoder是密码解析器,官方推荐的实现类是BCryptPasswordEncoder。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)