SecurityContextHolder, to provide access to the SecurityContext.
SecurityContext: to hold the Authentication and possibly request-specific security information.
Authentication: 表示用户认证信息
GrantedAuthority: 当前用户拥有的权限,通过Authentication的getAuthorities()获取,是一个数组。
UserDetails: 定义了一些可以获取用户名、密码、权限等与认证相关的信息的方法,通过UserDetailsService的loadUserByUsername()方法进行加载。
UserDetailsService: org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl(通过数据库或内存获取UserDetails)
UserDetailsService->UserDetails
UserDetailsService->GrantedAuthority(role)
SecurityContextHolder->SecurityContext->Authentication(principal,)
加载用户dao相关:
UserDetailsService(接口):loadUserByUsername(String username) 子类UserDetailsManager:(接口)changePassword(String oldPassword, String newPassword),createUser(UserDetails user),deleteUser(String username)等CachingUserDetailsService:InMemoryUserDetailsManager: JdbcDaoImpl:JdbcUserDetailsManager: LdapUserDetailsManager:LdapUserDetailsService:
用户信息相关:
UserDetails:(接口)getAuthorities(),getPassword(),getUsername(),isAccountNonExpired()等InetOrgPerson:LdapUserDetailsImpl:LdapUserDetailsImpl:Person:UserDetails implementation whose properties are based on the LDAP schema for Person.User:(类)
认证相关:
Principal:(java.security)equals(Object another),getName() Authentication:(接口)一旦一个request被认证,Authentication 就会被放入 thread-local SecurityContext managed by the SecurityContextHolder SecurityContextHolder.getContext().setAuthentication(anAuthentication);显式认证,Collection<? extends GrantedAuthority> getAuthorities(),getCredentials(), getDetails(),getPrincipal()UsernamePasswordAuthenticationToken:for simple presentation of a username and password. RememberMeAuthenticationToken:OpenIDAuthenticationToken:...
GrantedAuthority:(接口)getAuthority()该方法返回一个字符串,表示对应权限的字符串表示,如果对应权限不能用字符串表示,则应当返回null。SimpleGrantedAuthority:为Authentication存放一个代表权限的字符串....
AuthenticationManager:(接口)处理一个Authentication request, Authentication authenticate(Authentication authentication)ProviderManager:通过AuthenticationProvider列表来处理认证请求,List<AuthenticationProvider> getProviders()  authenticate(Authentication authentication)
AuthenticationProvider:(接口)DaoAuthenticationProvider:从UserDetailsService获取一个user,getUserDetailsService(),retrieveUser(String username, UsernamePasswordAuthenticationToken authentication)异常相关:
AuthenticationException:AuthenticationServiceException
过滤器相关:
Filter(javax.servlet):void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)  GenericFilterBeanDelegatingFilterProxy:OncePerRequestFilter:FilterChainProxy:AbstractAuthenticationProcessingFilter: attemptAuthentication (request,response),getFailureHandler(),getSuccessHandler() successfulAuthentication(),unsuccessfulAuthentication()CasAuthenticationFilter,OpenIDAuthenticationFilterUsernamePasswordAuthenticationFilter:getPasswordParameter() ,getUsernameParameter() ,obtainPassword( request) ,setDetails()ExceptionTranslationFilter:Handles any AccessDeniedException and AuthenticationException thrown within the filter chain. ConcurrentSessionFilter:determineExpiredUrl(HttpServletRequest request, SessionInformation info) Hander相关:
AuthenticationSuccessHandler:(接口):onAuthenticationSuccess(request,response,authentication)ForwardAuthenticationSuccessHandler:SavedRequestAwareAuthenticationSuccessHandler:SimpleUrlAuthenticationSuccessHandler:Event相关:
InteractiveAuthenticationSuccessEvent
入口:
AuthenticationEntryPoint:LoginUrlAuthenticationEntryPoint:UsernamePasswordAuthenticationFilter使用ExceptionTranslationFilter来重定向到登录页面commence (request,response,authException)重定向方法,getLoginFormUrl()
Listener相关:
javax.servlet.http.HttpSessionListenerHttpSessionEventPublisher: sessionCreated(javax.servlet.http.HttpSessionEvent event), sessionDestroyed(javax.servlet.http.HttpSessionEvent event)
Session相关:
SessionRegistry:(接口):getAllPrincipals() getAllSessions(), getSessionInformation(),registerNewSession()SessionRegistryImpl:
SessionAuthenticationStrategy:(接口)A CompositeSessionAuthenticationStrategySessionAuthenticationStrategy that accepts multiple SessionAuthenticationStrategy implementations to delegate to. Each SessionAuthenticationStrategy is invoked in turn. The invocations are short circuited if any exception, (i.e. SessionAuthenticationException) is thrown. ConcurrentSessionControlAuthenticationStrategy:控制用户可以同时登录的数量,就是控制一个用户可以同时创建几个sessionSessionFixationProtectionStrategy:防止会话固定攻击RegisterSessionAuthenticationStrategy:register a user with the SessionRegistry after successful Authentication.
匿名认证相关:
AuthenticationProviderAnonymousAuthenticationProvider:authenticate(Authentication authentication), getKey()
Authentication:AnonymousAuthenticationToken:Represents an anonymous Authentication,getPrincipal()
GenericFilterBeanAnonymousAuthenticationFilter: createAuthentication(HttpServletRequest request)  public String getCurrentUsername()
{Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();if (principal instanceof UserDetails) {return ((UserDetails) principal).getUsername();}if (principal instanceof Principal) {return ((Principal) principal).getName();}return String.valueOf(principal);}

转载于:https://www.cnblogs.com/wangyonglong/p/7347209.html

spring认证的一些核心类相关推荐

  1. Spring源码解析-核心类之XmlBeanDefinitionReader

    XmlBeanDefinitionReader XML配置文件的读取是 Spring 中重要的功能,因为 Spring 的大部分功能都是以配置作为切入点的,那么我们可以从 XmlBeanDefinit ...

  2. Spring源码系列- Spring Beans - 核心类的基本介绍

    Spring源码系列- Spring Beans - 核心类的基本介绍 读过上一篇文章的读者应该都能对Spring的体系结构有一个大致的了解,在结尾处,我也说过会从spring-beans包开始分析, ...

  3. Spring认证中国教育管理中心-Spring Data Neo4j教程三

    原标题:Spring认证中国教育管理中心-Spring Data Neo4j教程三(Spring中国教育管理中心) 6.2.处理和提供唯一 ID 6.2.1.使用内部 Neo4j id 为您的域类提供 ...

  4. Spring认证中国教育管理中心-Spring Data Redis框架教程三

    原标题:Spring认证中国教育管理中心-Spring Data Redis框架教程三 10.15.支持类 Packageorg.springframework.data.redis.support提 ...

  5. 你知道Spring是怎么解析配置类的吗?

    Spring执行流程图如下: Spring执行流程图 这个流程图会随着我们的学习不断的变得越来越详细,也会越来越复杂,希望在这个过程中我们都能朝着精通Spring的目标不断前进!  在上篇文章我们学 ...

  6. Ehcache中核心类和方法

    Ehcache中核心类和方法 EhCache里面有一个CacheManager类型,它负责管理cache.Cache里面存储着Element对象,Element必须是key-value对.Cache是 ...

  7. core 包的核心类JdbcTemplate

    JdbcTemplate 是core 包的核心类.它替我们完成了资源的创建以及释放工作,从而简化了我们对JDBC 的使用.它还可以帮助我们避免一些常见的错误,比如忘记关闭数据库连接.JdbcTempl ...

  8. SpringBoot2 | Spring IOC 流程中核心扩展接口的12个扩展点源码分析(十一)

    微信公众号:吉姆餐厅ak 学习更多源码知识,欢迎关注. SpringBoot2 | SpringBoot启动流程源码分析(一) SpringBoot2 | SpringBoot启动流程源码分析(二) ...

  9. 转 Spring源码剖析——核心IOC容器原理

    Spring源码剖析--核心IOC容器原理 2016年08月05日 15:06:16 阅读数:8312 标签: spring 源码 ioc 编程 bean 更多 个人分类: Java https:// ...

最新文章

  1. java爬虫面试题_使用Java实现网络爬虫
  2. pytorch 数据加载性能对比
  3. 【设计模式】责任链模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  4. MapReduce 模式、算法和用例
  5. sqlserver大数据归档
  6. 文本分类从入门到精通
  7. HTTP访问一个网站的过程详解
  8. 函数wait、waitpid、孤儿进程、僵尸进程
  9. iis无法读取配置文件_SpringBoot 有很多读取配置文件的方法,你知道几个? 静态方法读取呢?...
  10. 互联网晚报 | 3月11日 星期五 |​ ​​商汤科技在深圳成立新公司,;微信支付电子小票上线...
  11. /dev/tty和/dev/console
  12. iservice封装有哪些方法_对WebService的一些封装技巧总结
  13. 解密初、中、高级程序员的进化之路(前端)
  14. visual studio(vs)中项目解决方案的目录组织安排
  15. adaptec SCSI卡管理和配置选项
  16. vf计算机教程,VF教程,打印版.pdf
  17. 根据旋转角计算欧拉角 (Computing Euler angles from a rotation matrix)
  18. HTTP 412状态码
  19. 达梦数据库巡检脚本--生成html格式的报告
  20. Unity Fleck Map 参数说明

热门文章

  1. 人工蜂群算法的最小搜索模型_【优化求解】人工蜂群ABC算法
  2. 现在这个时代变了,区块链,数字货币才是最火的项目
  3. Jumpserver0.4.0基于Centos7安装
  4. CentOS 6.3 源码编译安装Apache
  5. ESX4.1 “USB设备支持”实测
  6. LeetCode 688. “马”在棋盘上的概率
  7. java定时器只执行一次_搞定Java并发:为什么说只有1种实现线程的方法?(下)...
  8. Ubuntu Linux创建Hadoop用户
  9. php revel,试用revel-一个基于golang的web框架
  10. bootstrap mysql分页_bootstrap实现分页