Spring Security 自我理解

spring security 是一个能够为 基于Spring的 企业应用系统提供声名式安全控制访问的安全框架,它利用了Spring的容器,充分利用了Spring的ioc和id,使我们不用再为了安全控制编写大量的代码

Spring security的使用必须基于Spring的监听器,监听器去加载security的配置文件 (不能使用springMvc的Servlet去读取配置文件,因为Servlet创建的容器是子容器,他的父容器是监听器创建的容器,所有子容器可以共享父容器的bean,但是父容器不能拿到子容器里面的bean),

读取要放行的路径,以及其他的一些配置,比如是否使用表达式,拦截路径,认证成功后的跳转路径,用不用csrf令牌校验,配置框架页面不拦截等

最重要的是配置认证管理器,认证管理器内配置认证提供者, 提供者可以用自己默认写死的用户名和密码,这样在访问服务器的时候,请求被security的过滤器拦截,获取到用户名和密码,调用认证管理器进行比较,然后放行或拦截,但一般我们不用这种方式,一般测试时候用

实际开发中需要用到用户存在数据库的用户名和密码,这时需要自定义认证提供者,定义一个类,实现UserDetailsService接口,重写

public UserDetails loadUserByUsername(String username) 方法,在这个方法里去掉用能获取数据库数据的服务:

1,如果所有服务都在一个服务器上,自定义认证管理器直接注入dao,调用方法,获取用户数据

2,如果是分布式服务,自定义认证提供者需要声明一个服务属性 ,然后生成set方法,在配置文件里配置bean时,声明这个property,

但是这个property引用的服务还需要从注册中心过去,所以还需要注册中心的配置,如果数据库的密码是加密的,需要在配置认证管理器中的认证提供者时候,声明所使用的加密器,

认证流程: 用户发送请求—> 过滤器拦截,获取用户名和密码,交给认证管理器,–> 认证管理器调用认证提供者中的方法—>此方法调用注入的服务,去,数据库获取用户信息,返回一个UserDetails的实现类user对象,此对象中已包含用户名密码权限–>,把此对象返回给认证管理器,管理器把前台传来的密码用同样的方法加密后,和数据库中的密码对比–>然后根据是否匹配,进行相应的跳转;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值