配置登录认证的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认证详解说明相关推荐

  1. Spring Boot 整合 shiro 之盐值加密认证详解(六)

    Spring Boot 整合 shiro 之盐值加密认证详解 概述 不加盐认证 加入密码认证核心代码 修改 CustomRealm 新增获取密文的方法 修改 doGetAuthenticationIn ...

  2. 《深入理解 Spring Cloud 与微服务构建》第十六章 Spring Boot Security 详解

    <深入理解 Spring Cloud 与微服务构建>第十六章 Spring Boot Security 详解 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...

  3. Spring Security应用详解(集成SpringBoot)

    Spring Security应用详解 集成SpringBoot 工作原理 认证流程 授权流程 集成SpringBoot 1.Spring Boot介绍 Spring Boot是一套Spring的快速 ...

  4. Spring JdbcTemplate方法详解

    2019独角兽企业重金招聘Python工程师标准>>> Spring JdbcTemplate方法详解 标签: springhsqldbjava存储数据库相关sql 2012-07- ...

  5. Spring Boot 配置文件详解

    2019独角兽企业重金招聘Python工程师标准>>> 第二篇 : Spring Boot配置文件详解 文章首发于微信公众号<程序员果果> 地址:https://mp.w ...

  6. spring2.0和spring2.5及以上版本的jar包区别 spring jar 包详解

    spring jar 包详解 spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环 ...

  7. Spring的lazy-init详解

    Spring中lazy-init详解 ApplicationContext实现的默认行为就是在启动服务器时将所有singleton bean提前进行实例化 (也就是依赖注入).提前实例化意味着作为初始 ...

  8. spring boot配置文件详解

    spring boot配置文件详解 application.properties是spring-boot的核心配置文件,这个配置文件基本可以取代我们ssm或者ssh里面的所有的xml配置文件. 当我们 ...

  9. JWT(Json web token)认证详解

    JWT(Json web token)认证详解 什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该to ...

最新文章

  1. 2840 页的计算机毕业论文,这位华人小哥的博士论文究竟写了啥?
  2. JAVA_HOME PATH CLASSPATH
  3. gdb 查看 stl容器 zz
  4. 软件工程概论 课堂练习【图书馆系统的用例图】
  5. 检查IP的shell
  6. linux怎么用命令备份数据库,使用linux的mysqlhotcopy命令备份数据库
  7. 暑期实习面试——艾锝科技,Python实习生
  8. @Retention注解
  9. kali linux关闭进程,技术|如何使用 Kali Linux 黑掉 Windows
  10. 企业或将借助OA走出经济危机
  11. 设置EntityFramework中decimal类型数据精度
  12. [资料] GIS资料汇总(GIS+Envi+erdas视频教程)
  13. React脚手架使用less
  14. 1每天Python小例-12306爬虫#WinError 2
  15. 太阳能电池基本特性实验报告_太阳能电池基本特性研究实验报告
  16. javascript技巧搜集。
  17. Python生成图片到visio的矢量图
  18. IP地址、网络号、网关的区别
  19. spring boot多数据库数据源启动报错“required a single bean, but 2 were found”的正确解决办法
  20. 【python-04】

热门文章

  1. foreach循环详细篇
  2. Z600服务器是阵列硬盘,HP Z600 工作站 SATA硬盘AHCI配置RAID方法.doc
  3. mysql如何改连接端口号_MYSQL修改端口号
  4. 单词要诀——词根记录
  5. Unity2d动态影子
  6. 安装webpack,webpack-cli,webpack-dev-server(版本一定要兼容!)
  7. Reids的BigKey和HotKey
  8. 2021年安全员-C证(陕西省)及安全员-C证(陕西省)证考试
  9. Java | IP工具类(获取访问者的ip地址 查询IP地址)
  10. Angular指令渗透式理解