spring认证的一些核心类
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认证的一些核心类相关推荐
- Spring源码解析-核心类之XmlBeanDefinitionReader
XmlBeanDefinitionReader XML配置文件的读取是 Spring 中重要的功能,因为 Spring 的大部分功能都是以配置作为切入点的,那么我们可以从 XmlBeanDefinit ...
- Spring源码系列- Spring Beans - 核心类的基本介绍
Spring源码系列- Spring Beans - 核心类的基本介绍 读过上一篇文章的读者应该都能对Spring的体系结构有一个大致的了解,在结尾处,我也说过会从spring-beans包开始分析, ...
- Spring认证中国教育管理中心-Spring Data Neo4j教程三
原标题:Spring认证中国教育管理中心-Spring Data Neo4j教程三(Spring中国教育管理中心) 6.2.处理和提供唯一 ID 6.2.1.使用内部 Neo4j id 为您的域类提供 ...
- Spring认证中国教育管理中心-Spring Data Redis框架教程三
原标题:Spring认证中国教育管理中心-Spring Data Redis框架教程三 10.15.支持类 Packageorg.springframework.data.redis.support提 ...
- 你知道Spring是怎么解析配置类的吗?
Spring执行流程图如下: Spring执行流程图 这个流程图会随着我们的学习不断的变得越来越详细,也会越来越复杂,希望在这个过程中我们都能朝着精通Spring的目标不断前进! 在上篇文章我们学 ...
- Ehcache中核心类和方法
Ehcache中核心类和方法 EhCache里面有一个CacheManager类型,它负责管理cache.Cache里面存储着Element对象,Element必须是key-value对.Cache是 ...
- core 包的核心类JdbcTemplate
JdbcTemplate 是core 包的核心类.它替我们完成了资源的创建以及释放工作,从而简化了我们对JDBC 的使用.它还可以帮助我们避免一些常见的错误,比如忘记关闭数据库连接.JdbcTempl ...
- SpringBoot2 | Spring IOC 流程中核心扩展接口的12个扩展点源码分析(十一)
微信公众号:吉姆餐厅ak 学习更多源码知识,欢迎关注. SpringBoot2 | SpringBoot启动流程源码分析(一) SpringBoot2 | SpringBoot启动流程源码分析(二) ...
- 转 Spring源码剖析——核心IOC容器原理
Spring源码剖析--核心IOC容器原理 2016年08月05日 15:06:16 阅读数:8312 标签: spring 源码 ioc 编程 bean 更多 个人分类: Java https:// ...
最新文章
- java爬虫面试题_使用Java实现网络爬虫
- pytorch 数据加载性能对比
- 【设计模式】责任链模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
- MapReduce 模式、算法和用例
- sqlserver大数据归档
- 文本分类从入门到精通
- HTTP访问一个网站的过程详解
- 函数wait、waitpid、孤儿进程、僵尸进程
- iis无法读取配置文件_SpringBoot 有很多读取配置文件的方法,你知道几个? 静态方法读取呢?...
- 互联网晚报 | 3月11日 星期五 |​ ​​商汤科技在深圳成立新公司,;微信支付电子小票上线...
- /dev/tty和/dev/console
- iservice封装有哪些方法_对WebService的一些封装技巧总结
- 解密初、中、高级程序员的进化之路(前端)
- visual studio(vs)中项目解决方案的目录组织安排
- adaptec SCSI卡管理和配置选项
- vf计算机教程,VF教程,打印版.pdf
- 根据旋转角计算欧拉角 (Computing Euler angles from a rotation matrix)
- HTTP 412状态码
- 达梦数据库巡检脚本--生成html格式的报告
- Unity Fleck Map 参数说明
热门文章
- 人工蜂群算法的最小搜索模型_【优化求解】人工蜂群ABC算法
- 现在这个时代变了,区块链,数字货币才是最火的项目
- Jumpserver0.4.0基于Centos7安装
- CentOS 6.3 源码编译安装Apache
- ESX4.1 “USB设备支持”实测
- LeetCode 688. “马”在棋盘上的概率
- java定时器只执行一次_搞定Java并发:为什么说只有1种实现线程的方法?(下)...
- Ubuntu Linux创建Hadoop用户
- php revel,试用revel-一个基于golang的web框架
- bootstrap mysql分页_bootstrap实现分页