SpringSecurity 特点:
- 和 Spring 无缝整合。
- 全面的权限控制。
- 专门为 Web 开发而设计。(新版本对整个框架进行了分层抽取,分成了核心模块和 Web 模块。单独引入核心模块就可以脱离 Web 环境)
模块划分
权限管理中的相关概念
SpringSecurity 基本原理
-
代码底层流程:重点看三个过滤器:
- FilterSecurityInterceptor:是一个方法级的权限过滤器, 基本位于过滤链的最底部。
- ExceptionTranslationFilter:是个异常过滤器,用来处理在认证授权过程中抛出的异常
- UsernamePasswordAuthenticationFilter :对/login 的 POST 请求做拦截,校验表单中用户名,密码。
- FilterSecurityInterceptor:是一个方法级的权限过滤器, 基本位于过滤链的最底部。
UserDetailsService 接口讲解
- 返回值UserDetail
这个类是系统默认的用户"主题"
以后我们只需要使用 User 这个实体类即可!
PasswordEncoder 接口讲解
接口实现类
配置类
@Override
protected void configure(HttpSecurity http) throws Exception {
// 配置认证
http.formLogin()
.usernameParameter("user")//获取用户名
.passwordParameter("password")//获取登录密码
.loginPage("/index") // 配置哪个 url 为登录页面
.loginProcessingUrl("/login") // 设置哪个是登录的 url。
.successForwardUrl("/success") // 登录成功之后跳转到哪个 url
.failureForwardUrl("/fail");// 登录失败之后跳转到哪个 url
http.authorizeRequests()
.antMatchers("/layui/**","/index") //表示配置请求路径
.permitAll() // 指定 URL 无需保护。
.anyRequest() // 其他请求
.authenticated(); //需要认证
// 关闭 csrf
http.csrf().disable();
}
基于角色或权限进行访问控制
- hasAuthority 方法
- hasAnyAuthority 方法
如果当前的主体有任何提供的角色(给定的作为一个逗号分隔的字符串列表)的话,返回true
评论区