SpringSecurity使用分类
如何使用SpringSecurity,相信百度过的都知道,总共有四种用法,从简到深为:
- 不用数据库,全部数据写在配置文件,这个也是官方文档里面的demo;
- 使用数据库,根据spring security默认实现代码设计数据库,也就是说数据库已经固定了,这种方法不灵活,而且那个数据库设计得很简陋,实用性差;
- spring security和Acegi不同,它不能修改默认filter了,但支持插入filter,所以根据这个,我们可以插入自己的filter来灵活使用;
- 暴力手段,修改源码,前面说的修改默认filter只是修改配置文件以替换filter而已,这种是直接改了里面的源码,但是这种不符合OO设计原则,而且不实际,不可用。
SpringSecurity的原理
基于 Filter , Servlet, AOP 实现身份认证和权限验证
虽然原理感觉会很复杂,不过没关系,通过代码的讲解,大家可以看完教程代码实现,再返回看这个简单的原理,可能会有不错的收获。
核心组件
- SecurityContextHolder:提供对SecurityContext的访问
- SecurityContext,:持有Authentication对象和其他可能需要的信息
- AuthenticationManager 其中可以包含多个AuthenticationProvider