本文源码: GitHub·点这里| | GitEE·点这里
1,基础概念
Spring Security是一个能够为基于春天的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在春天应用上下文中配置的Bean,充分利用了Spring的IOC, DI, AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为安全控制编写大量重复代码的工作。
2),认证
源代码 <前> <代码>公共接口验证主要延伸,可序列化的{ Collection<?GrantedAuthority>延伸;getAuthorities (); 对象getCredentials (); 对象getDetails (); 对象getPrincipal (); 布尔isAuthenticated (); 空白setAuthenticated(布尔var1)抛出IllegalArgumentException; } 代码>
源码分析
<前> <代码> 1),getAuthorities权限列表,通常是代表权限的字符串集合; 2)、getCredentials密码,认证之后会移出,来保证安全性; 3)、getDetails请求的细节参数; 4)、getPrincipal核心身份信息,一般返回UserDetails的实现类。 代码>3), UserDetails
封装了用户的详细的信息。
<前> <代码>公共接口UserDetails延伸可序列化的{ Collection<?GrantedAuthority>延伸;getAuthorities (); 字符串getPassword (); 字符串getUsername (); 布尔isAccountNonExpired (); 布尔isAccountNonLocked (); 布尔isCredentialsNonExpired (); 布尔isEnabled (); } 代码>4), UserDetailsService
实现该接口,自定义用户认证流程,通常读取数据库,对比用户的登录信息,完成认证,授权。
<前> <代码>公共接口UserDetailsService { UserDetails loadUserByUsername (String var1)抛出UsernameNotFoundException; } 代码>5), AuthenticationManager
认证流程顶级接口。可以通过实现AuthenticationManager接口来自定义自己的认证方式,春天提供了一个默认的实现,ProviderManager。
<前> <代码>公共接口AuthenticationManager { 身份验证进行身份验证(验证var1) AuthenticationException扔; } 代码>