spring security2认证详解说明
配置登录认证的filter
<!--
和servlet spec差不多,处理登陆请求 authenticationFailureUrl定义登陆失败时转向的页面
defaultTargetUrl定义登陆成功时转向的页面 filterProcessesUrl定义登陆请求的页面
rememberMeServices用于在验证成功后添加cookie信息
-->
<bean id="authenticationProcessingFilter"
class="com.platform.security.service.filter.UserAuthenticationProcessingFilter">
<property name="authenticationManager"
ref="authenticationManager" />
<property name="authenticationFailureUrl">
<value>/login.jsp?login_error=user_psw_error</value>
</property>
<property name="filterProcessesUrl">
<value>/j_spring_security_check</value>
</property>
<property name="defaultTargetUrl">
<value>/security/index.do</value>
</property>
<property name="alwaysUseDefaultTargetUrl">
<value>true</value>
</property>
<property name="userManager"ref="userManager" />
<property name="loginDao"ref="loginLogDao"></property>
<property name="rememberMeServices"ref="rememberMeServices" />
<property name="exceptionMappings">
<value>
org.springframework.security.AuthenticationException=/login.jsp?login_error=user_psw_error
org.springframework.security.concurrent.ConcurrentLoginException=/login.jsp?login_error=too_many_user_error
</value>
</property>
</bean>
在这个bean中定义了authenticationManager,具体的是否能够登录的判断就是由authenticationManager来进行的:
authenticationManager的定义如下:
<bean id="authenticationManager"
class="org.springframework.security.providers.ProviderManager">
<property name="providers">
<list>
<ref local="daoAuthenticationProvider"/>
<ref local="anonymousAuthenticationProvider"/>
<ref local="rememberMeAuthenticationProvider"/>
</list>
</property>
<property name="sessionController">
<ref bean="concurrentSessionController"/>
</property>
</bean>
在这个中定义了具体的认证管理器实现,而其中的
<ref local="daoAuthenticationProvider"/>
<ref local="anonymousAuthenticationProvider"/>
<ref local="rememberMeAuthenticationProvider"/>
是用来进行从数据库里面读取用户等信息进行判断的:
<bean id="daoAuthenticationProvider"
class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
<property name="userDetailsService"ref="jdbcDaoImpl" />
<property name="userCache"ref="userCache" />
<property name="passwordEncoder"ref="passwordEncoder" />
</bean>
DaoAuthenticationProvider类继承了AbstractUserDetailsAuthenticationProvider类,而进行具体判断的时候,是调用AbstractUserDetailsAuthenticationProvider类中的public Authenticationauthenticate(Authentication authentication) throws AuthenticationException方法,在该方法中首先会从缓存中去获取用户信息:
UserDetails user = this.userCache.getUserFromCache(username);
如果没有获取到,那么就在调用方法:
user = retrieveUser(username,(UsernamePasswordAuthenticationToken) authentication);去获取用户,在这个方法中会调用在xml文件中配置的userDetailsService来实现获取用户,所以这个userDetailsService也是可以进行自定义的,默认是使用jdbcDaoImpl。
spring security2认证详解说明相关推荐
- Spring Boot 整合 shiro 之盐值加密认证详解(六)
Spring Boot 整合 shiro 之盐值加密认证详解 概述 不加盐认证 加入密码认证核心代码 修改 CustomRealm 新增获取密文的方法 修改 doGetAuthenticationIn ...
- 《深入理解 Spring Cloud 与微服务构建》第十六章 Spring Boot Security 详解
<深入理解 Spring Cloud 与微服务构建>第十六章 Spring Boot Security 详解 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...
- Spring Security应用详解(集成SpringBoot)
Spring Security应用详解 集成SpringBoot 工作原理 认证流程 授权流程 集成SpringBoot 1.Spring Boot介绍 Spring Boot是一套Spring的快速 ...
- Spring JdbcTemplate方法详解
2019独角兽企业重金招聘Python工程师标准>>> Spring JdbcTemplate方法详解 标签: springhsqldbjava存储数据库相关sql 2012-07- ...
- Spring Boot 配置文件详解
2019独角兽企业重金招聘Python工程师标准>>> 第二篇 : Spring Boot配置文件详解 文章首发于微信公众号<程序员果果> 地址:https://mp.w ...
- spring2.0和spring2.5及以上版本的jar包区别 spring jar 包详解
spring jar 包详解 spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环 ...
- Spring的lazy-init详解
Spring中lazy-init详解 ApplicationContext实现的默认行为就是在启动服务器时将所有singleton bean提前进行实例化 (也就是依赖注入).提前实例化意味着作为初始 ...
- spring boot配置文件详解
spring boot配置文件详解 application.properties是spring-boot的核心配置文件,这个配置文件基本可以取代我们ssm或者ssh里面的所有的xml配置文件. 当我们 ...
- JWT(Json web token)认证详解
JWT(Json web token)认证详解 什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该to ...
最新文章
- 2840 页的计算机毕业论文,这位华人小哥的博士论文究竟写了啥?
- JAVA_HOME PATH CLASSPATH
- gdb 查看 stl容器 zz
- 软件工程概论 课堂练习【图书馆系统的用例图】
- 检查IP的shell
- linux怎么用命令备份数据库,使用linux的mysqlhotcopy命令备份数据库
- 暑期实习面试——艾锝科技,Python实习生
- @Retention注解
- kali linux关闭进程,技术|如何使用 Kali Linux 黑掉 Windows
- 企业或将借助OA走出经济危机
- 设置EntityFramework中decimal类型数据精度
- [资料] GIS资料汇总(GIS+Envi+erdas视频教程)
- React脚手架使用less
- 1每天Python小例-12306爬虫#WinError 2
- 太阳能电池基本特性实验报告_太阳能电池基本特性研究实验报告
- javascript技巧搜集。
- Python生成图片到visio的矢量图
- IP地址、网络号、网关的区别
- spring boot多数据库数据源启动报错“required a single bean, but 2 were found”的正确解决办法
- 【python-04】