首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Securiry

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

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

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

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

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

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

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

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180516G1POUK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券