使用spring认证登录,登录之后,一般还需要进行其他处理,例如:保存登录时间、登录ip到数据库,缓存用户信息到redis数据库等等,这些操作可以通过自定义一个登录成功处理器来处理。

自定义认证成功处理器

只需要继承AuthenticationSucdessHandler即可实现自定义处理器:

public class AuthenticationSuccessHandlerImpl implements AuthenticationSuccessHandler {@Overridepublic void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,Authentication authentication) throws IOException, ServletException {request.getRequestDispatcher("/login").forward(request, response);}}

我自定义的处理器很简单,直接转发请求到/login,这是因为,我在使用spring security 之前,就已经写了一个登录功能,这样,不用修改代码就可以运行之前的登录逻辑了。

当然,spring-security.xml文件也要做小小的修改:

     <http><intercept-url pattern="/user/**" access="hasRole('USER')" /><intercept-url pattern="/admin/**" access="hasRole('ADMIN')" /><form-login login-page="/login"login-processing-url="/login"authentication-failure-url="/login?error"username-parameter="phone"password-parameter="password" authentication-success-handler-ref="authSuccess"/><logout invalidate-session="true"logout-url="loginout"logout-success-url="/login"/></http>  <!-- 自定义认证成功处理器 --><beans:bean id="authSuccess" class="com.huanle.utils.security.AuthenticationSuccessHandlerImpl"></beans:bean>

上面的代码中,我们定义了一个AuthenticationSuccessHandlerImpl的bean

然后,在<form-login>标签中添加了authentication-success-handler-ref="authSuccess",删除了default-target-url属性,因为自定义处理器之后,default-target-url就失效了。

spring security:自定义认证成功处理器相关推荐

  1. (二)Spring Security自定义登录成功或失败处理器

    目录 一:创建登录成功处理器 二:创建登录失败处理器 三:添加处理器 三. 项目地址 我们接着上一章 Spring Security最简单的搭建,进行开发 LoginSuccessHandler 和L ...

  2. spring security 自定义认证登录

    spring security 自定义认证登录 1.概要 1.1.简介 spring security是一种基于 Spring AOP 和 Servlet 过滤器的安全框架,以此来管理权限认证等. 1 ...

  3. SpringSecurity自定义认证成功处理器

    自定义认证成功处理器 代码实现 1.实现AuthenticationSuccessHandler接口 第一步:实现 AuthenticationSuccessHandler @Component(&q ...

  4. Spring Security——自定义认证错误提示信息及自适应返回格式解决方案

    解决方案 package com.hailiu.web.handler;import com.hailiu.model.Log; import com.hailiu.web.bean.Response ...

  5. spring security登陆认证成功后无法控制权限

    刚接触spring security不久便遇到成功登陆但是无法控制权限的问题,一直找资料都没找到原因,之后才发现是个小坑.. 我们在定义角色表的时候要在角色的前面加上 ROLE_ 前缀 不然secur ...

  6. spring security自定义指南

    序 本文主要研究一下几种自定义spring security的方式 主要方式 自定义UserDetailsService 自定义passwordEncoder 自定义filter 自定义Authent ...

  7. 3.Spring Security 自定义用户认证

    Spring Security自定义用户认证 自定义认证过程 自定义认证的过程需要实现Spring Security提供的UserDetailService接口,该接口只有一个抽象方法loadUser ...

  8. Spring Security用户认证和权限控制(默认实现)

    1 背景 实际应用系统中,为了安全起见,一般都必备用户认证(登录)和权限控制的功能,以识别用户是否合法,以及根据权限来控制用户是否能够执行某项操作. Spring Security是一个安全相关的框架 ...

  9. Spring Security自定义登录验证及登录返回结果

    Spring Security自定义登录验证及登录返回结果 一.功能描述 二.处理逻辑 简单流程 自定义UserDetails 自定义UserDetailsDAO 自定义UserDetailsServ ...

最新文章

  1. java怎么创建二进制文件_Java:如何编写二进制文件?
  2. LeetCode-数学-9. 回文数
  3. 盘它:1200 天积淀,超 750 篇干货,为你甄选这 100 + 篇精华!
  4. C#基础解析之Ⅲ 【循环结构】
  5. java dao模式_Java DAO 模式
  6. html5怎么设置li向下移,请问如何实现鼠标移到li上改变另一个div的样式
  7. oracle Client 11g静默安装
  8. [Teamcenter 2007 开发实战] 调用web service
  9. [转载]Qt之获取本机网络信息_vortex_新浪博客
  10. armhf php环境搭建,armel、armhf 和 arm64 区别选择
  11. 浅析JDK,JRE,JVM的区别
  12. D. Powerful array 莫队算法或者说块状数组 其实都是有点优化的暴力
  13. C#积木游戏(改编自DevExpress GridTetris)
  14. ListView 控件与 ImageList 控件
  15. 点云数据(point cloud)
  16. js科学计算机,js网页在线科学计算器代码
  17. matlab弹簧振子的阻尼振动,matlab阻尼振动模拟
  18. python pipe_python pipe模块用法
  19. 一些EXCHANGE命令
  20. 计算机找不管理员,Win7系统鼠标右键找不到“管理员获取所有权”选项怎么办...

热门文章

  1. JavaScript计算两个日期相差天数/分钟/小时
  2. 解决Vue跳转到当前路由报错问题
  3. mysql自带加密解密字符集问题
  4. C# 获取gzip网页解压处理
  5. abaqus生成adams柔性体_基于ADAMS 的大型反铲挖泥机加装破碎锤 结构动力学分析
  6. linux安装数据库依赖包,Linux下安装DB2的包依赖
  7. mysql error 1201_ERROR 1201 (HY000): Could not initialize master info structure; .....
  8. 自定义链表增,删除,链表逆序
  9. 热度3年猛增20倍,Serverless云开发的技术架构全解析
  10. 扩展 KMP(模板) 洛谷P5410