SpringSecurity框架系列基础理论

目录

两个核心

两个安全框架

三个主要过滤器:

springSecurity过滤器加载过程

两个重要的接口

UserDetailsService接口

PasswordECnodeer接口


两个核心

用户认证(Authentication): 通俗点说就是系统认为用户是否能登录
用户授权(Authorization): 通俗点讲就是系统判断用户是否有权限去做某些事情
 

两个安全框架

springSecurity框架对比
 
 特点:与Spring 无缝整合、全面的权限控制、重量级。
特别注意:新旧版本的区别
旧版本不能脱离 Web 环境使用。
新版本对整个框架进行了分层抽取,分成了核心模块和 Web 模块。单独 引入核心模块就可以脱离 Web 环境。
 
shiro框架
特点:轻量级,简单
◼好处:不局限于 Web 环境,可以脱离 Web 环境使用
缺陷:在 Web 环境下一些特定的需求需要手动编写代码定制
 

三个主要过滤器:

FilterSecurityInterceptor :是一个 方法级的权限过滤器 , 基本位于过滤链的 最底部
 
 
ExceptionTranslationFilter :是个异常过滤器,用来处理在认证授权过程中抛出的异常。
 
UsernamePasswordAuthenticationFilter :对 /login POST 请求做拦截,校验表单中用户 名,密码
注意这里如果用表单提交时必须是post请求,并且表单中用户名和密码的属性必须是username和 password
 

springSecurity过滤器加载过程

springSecurity中过滤器的是如何加载的?

 
源码分析
第一步:通过DelegatingFilterProxy过滤器中initDelegate方法进行初始化
 
第二步:执行initDelegate方法,获取filterchainProxy过滤器(即下面从webApplicationContext中通过targetBeanName获取到)
第三步:通过FilterChainProxy过滤器中,获取到所有的过滤器加载到过滤器链中
 

两个重要的接口

UserDetailsService接口

该主要处理实际项目开发中用户名和密码都是从数据库中查询,而不是由springSecurity在控制台生成密码,因此需要自定义认证控制逻辑,此逻辑通过实现

UserDetailsService接口来实现。
 
默认的登录用户名和密码的逻辑是通过UsernamePasswordAuthenticationFilter过滤器实现认证登录的。
 

而实际开发中需要做我们自己的登录认证时

只需要自定义一个过滤器继承UsernamePasswordAuthenticationFilter,

然后重写三个方法attemptAuthenticationsuccessfulAuthentication及unsuccessfulAuthentication方法即可.

而从数据库查询用户的用户名和密码信息就是在UserDetailsService接口的实现类中实现,且注意的是从数据库中查询的用户对象USER必须是springSecurity提供的才行。

PasswordECnodeer接口

该接口主要是对用户密码进行加密处理

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值