Spring Security简介

(1)Spring Security是Spring 家族中的安全框架,并配备了流行的安全算法实现捆绑在一起

(2)Spring Security与Spring MVC有很好地集成,充分利用了Spring中的 IOC(控制反转)、DI(依赖注入)、AOP(面向切面编程)的功能

(3)一般Web应用都需要进行安全控制,安全控制主要包括两个操作“认证”与“验证”(有时候也会叫做权限控制)安全控制(认证和授权)也是SpringSecurity作为安全框架的核心功能

认证授权简介
认证验证当前访问系统的,是不是本系统的用户,并且要确认具体是哪个用户
授权经过认证后,判断当前用户是否有权限,进行某个操作

Spring Security可扩展功能

扩展简介
鉴权失败处理器Security 鉴权失败默认跳转登录页面,可以实现 AccessDeniedHandler 接口,重写 handle() 方法来自定义处理逻辑; 然后参考配置类说明将处理器加入到配置当中。
验证器实现 AuthenticationProvider 接口来实现自己验证逻辑。 需要注意的是在这个类里,就算抛出异常,也不会中断验证流程,而是算验证失败, 只要有一个验证器验证成功,就算验证成功,所以需要留意这一点
登录认证成功处理器在 Security 中验证成功默认跳转到上一次请求页面或者路径为 “/“ 的页面,同样可以自定义 继承 SimpleUrlAuthenticationSuccessHandler 这个类或者实现 AuthenticationSuccessHandler 接口,建议采用继承的方式, SimpleUrlAuthenticationSuccessHandler 是默认的处理器,采用继承可以契合里氏替换原则, 提高代码的复用性和避免不必要的错误。
投票器投票器可继承 WebExpressionVoter 或者实现 AccessDecisionVoter接口; WebExpressionVoter 是 Security 默认的投票器;我这里同样建议采用继承的方式; 投票器 vote 方法返回一个int值;-1代表反对,0代表弃权,1代表赞成; 投票管理器收集投票结果,如果最终结果大于等于0则放行该请求。
登录认证过滤器自定义 token 处理器继承自 OncePerRequestFilter 或者 GenericFilterBean 或者 Filter 都可以, 在这个处理器里面需要完成的逻辑是:获取请求里的 token,验证 token 是否合法然后填充 SecurityContextHolder , 虽然说过滤器只要添加在投票器之前就可以,但建议添加在 http.addFilterAfter(new MyFittler(), LogoutFilter.class);
登出成功处理器实现LogoutSuccessHandler接口,添加到配置的方式参考上文。
登录失败处理器登录失败默认跳转到登录页,同样可以自定义。 继承 SimpleUrlAuthenticationFailureHandler 或者实现 AuthenticationFailureHandler,建议采用继承。
自定义 UsernamePasswordAuthenticationFilter自定义UsernamePasswordAuthenticationFilter可以极大提高我们 Security的灵活性(比如添加验证验证码是否正确的功能) 直接继承 UsernamePasswordAuthenticationFilter ,然后在配置类中初始化这个过滤器, 给这个过滤器添加登录失败处理器,登录成功处理器,登录管理器,登录请求 url 。