目录
- springsecurity权限控制使用的必要性分析及它的概念介绍
- 基于session的认证和授权流程介绍
- 认证流程
- 认证检查
- 授权流程
- 代码
- 认证流程小结
- 认证授权流程
- Security中核心过滤器链
- security执行认证的详细流程图
- Security授权流程
- 剩余见代码工程
springsecurity权限控制使用的必要性分析及它的概念介绍
认证,授权,RBAC,
基于session的认证和授权流程介绍
文档+
认证流程
认证检查
授权流程
代码
认证流程小结
- SpringSecurity根据我们在WebSecurityConfig中的配置会对除了“/login”之外的资源进行拦截做认证检查,
- 如果没有认证会跳转到默认的认证页面“/login” ,
- 输入用户名和密码后点击登录,SpringSecurity会带着用户名调用 UserDetailsService.loadUserByUsername获取用户的认证信息(用户名,密码,权限等),
- 然后执行认证工作:表单密码和loadUserByUsername加载的数据库的密码进行匹配(PasswordEncoder)
- 认证成功跳转成功地址
认证授权流程
SpringSecurity是基于Filter实现认证和授权,底层通过FilterChainProxy代理去调用各种Filter(Filter链),Filter通过调用AuthenticationManager完成认证 ,通过调用AccessDecisionManager完成授权。流程如下图:
Security中核心过滤器链
security执行认证的详细流程图
Security授权流程
流程思路小结
剩余见代码工程
配置,重写filter查数据库权限列表,授权注解
用两个注解完成授权,不需要Java代码,加完该注解后执行该方法会有权限校验,
@PreAuthorize("hasAuthority('employee:list')")
@PreAuthorize("hasAnyAuthority('employee:update','dept:update')")
以上是在已登录情况下,如果没有登录会进入登录页面
登录表单提交/login交给了Security框架