Spring Security 完成登陆后一般需要一些自定义的处理,例如,记录登陆日志,初始化用户菜单等等
这里就需要自定义的 登陆成功处理了,Spring 提供了 AuthenticationSuccessHandler 接口,完成这个接口就可以了。 但是,修改到这里处理后,原先系统的自动转向处理就没有了,接口中应该怎么写,才可以保持原来的功能呢?
代码如下:
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication arg2) throws IOException, ServletException { logger.info("Success hanlder"); //这里加入需要的处理 String redirectUrl = "index"; //缺省的登陆成功页面 SavedRequest savedRequest = (SavedRequest) request.getSession().getAttribute("SPRING_SECURITY_SAVED_REQUEST"); if(savedRequest != null) { redirectUrl = savedRequest.getRedirectUrl(); request.getSession().removeAttribute("SPRING_SECURITY_SAVED_REQUEST"); } response.sendRedirect(redirectUrl); }
主要是读取Session中 SPRING_SECURITY_SAVED_REQUEST的值,获得原先的跳转页面。
当然 SecurityConfig 里面这样配置
@EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { // @formatter:off @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() // .antMatchers("/css/**", "/index","/plug-in/**").permitAll() .antMatchers("/user/**","/blank","/ui_colors").hasRole("ADMIN").and().formLogin() .loginPage("/login").failureUrl("/login-error").successHandler(new SimpleLoginSuccessHandler()).and().rememberMe(); } // @formatter:on // @formatter:off @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().withUser("admin").password("123456") .roles("ADMIN"); } // @formatter:on }
相关推荐
Spring Security提供了统一的异常处理机制,如`AccessDeniedException`(访问被拒绝)和`AuthenticationException`(认证失败)。可以通过实现`AccessDeniedHandler`和`AuthenticationEntryPoint`接口来自定义异常...
最后,为了使Spring Security能够处理GET请求的登录页面,你需要在`<http>`配置中添加一个`intercept-url`,允许未认证的用户访问这个页面: ```xml ... *" access="permitAll" /> ... ``` 综上所述,Spring ...
本文将详细介绍如何通过Spring Security配置多个登录页面,并为不同类型的用户设置不同的登录逻辑及登出后的返回界面。这不仅有助于提高系统的安全性,还能优化用户体验。 ### Spring Security简介 Spring ...
Spring Security提供了UserDetailsService接口来处理用户信息的检索和验证。开发者可以自定义实现该接口,将用户数据存储在数据库或其他持久化层中。 2. **手机号登录**:为了适应移动互联网的需求,Spring ...
- **登录页面中的参数配置:** 设置登录页面的请求参数,确保Spring Security能够正确处理这些参数。 - **测试一下:** 测试自定义登录页面的功能是否正常。 - **第5章:使用数据库管理资源** - **数据库表结构...
- **8.3.1 后登陆的将先登录的踢出系统** - 讲解如何配置会话策略,使得后来者的登录会导致先前用户的会话失效。 - **8.3.2 后面的用户禁止登陆** - 分析如何配置策略,防止同一账户的重复登录。 **9. 单点登录...
5. **实现登录逻辑**:在Controller中处理登录请求,调用Spring Security进行认证,验证成功后跳转到相应页面。 这个项目对于理解Spring全家桶的集成和Web应用的安全性有着重要的实践价值。通过实际操作,开发者...
在Spring Security框架中,自定义成功失败处理器是用于定制用户登录认证后的响应行为。默认情况下,Spring Security提供了标准的处理程序来处理用户的登录成功或失败情况,但有时我们需要根据业务需求进行个性化设置...
springsecurity1.2 引入SpringSecurity 2. 认证 2.1 登陆校验流程 2.2 原理初探 2.2.1 SpringSecurity完整流程 2.2.2 认证流程详解 2.3 解决问题 2.3.1 思路分析 2.3.2 准备工作 2.3.3 实现 2.3.3.1 数据库校验用户 ...
SpringSecurity是Spring生态系统中的安全框架,负责处理身份验证和授权。在SpringBoot项目中集成SpringSecurity,我们需要配置安全拦截器,定义哪些URL需要进行身份验证,哪些URL是公开的。然后,我们可以设置登录...
13.3. 处理后决定 14. 安全对象实现 14.1. AOP联盟 (MethodInvocation) 安全拦截器 14.1.1. 精确的 MethodSecurityIterceptor 配置 14.2. AspectJ (JoinPoint) 安全拦截器 15. 基于表达式的权限控制 15.1. ...
通过以上步骤,你已经成功地在SpringSecurity 4.2中实现了自定义登录页面和图形验证码。这只是一个基本的实现,实际项目中可能需要根据具体需求进行更多的定制,例如使用session存储验证码、设置验证码过期时间等。...
在本项目中,通过集成Spring Security OAuth2和JWT(JSON Web Token)技术,实现了这样一个功能。下面将详细介绍这两个关键组件及其在SSO中的作用。 1. Spring Security OAuth2: Spring Security 是一个全面的...
登录成功后,SpringSecurity会生成一个JWT(JSON Web Token)并返回给前端,前端将其存储在本地,用于后续请求的认证。 授权部分,SpringSecurity允许我们通过定义访问控制规则(如`@PreAuthorize`和`@Secured`注解...
通过以上步骤,你已经配置了Spring Security来处理登录、权限和角色控制。当用户尝试访问受保护的资源时,Spring Security会自动重定向到登录页面。登录成功后,它会根据用户的角色决定是否允许访问请求的资源。同时...
- **15.5 为不同用户显示各自的登陆成功页面** - 根据用户的不同身份显示不同的登录成功页面。 - **示例代码**: 配置不同用户的登录成功页面。 **16. 自动登录** - **16.1 默认策略** - Spring Security默认...
- **面向切面编程 (AOP)**:Spring Security 使用 AOP 来处理权限检查,这样可以在不修改业务代码的情况下实现安全性。 2. **Spring Security 入门步骤** - **创建项目**:首先创建一个名为 `spring-security-...
在本文中,我们将深入探讨如何使用Spring框架来实现登录验证,并在用户成功登录后增加积分。这个主题对于那些想要深入了解Spring及其在Web应用程序中的应用,尤其是安全性和业务逻辑处理的开发者来说,是非常有价值...
- **为不同用户显示各自的登陆成功页面**: 根据用户角色展示不同的欢迎页面。 ##### 14. 自动登录 - **默认策略**: 使用默认的自动登录策略。 - **持久化策略**: 实现持久化的自动登录功能。 ##### 15. 匿名登录 ...