首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将Spring Security迁移到Java Config,authentication-success-handler-ref在哪里?

将Spring Security迁移到Java Config,authentication-success-handler-ref在哪里?
EN

Stack Overflow用户
提问于 2014-01-14 01:24:47
回答 2查看 18K关注 0票数 18

我们的应用程序有一个自定义的成功处理程序,用于成功登录。当他们的会话到期时,它基本上将他们重定向到他们所在的页面。

我们将转向Java配置,而不是spring xml配置。配置的其余部分进行得非常顺利,但是我们找不到将security:form-login标记的身份验证-成功-处理程序-引用属性放在哪里。

代码语言:javascript
复制
<security:http auto-config='true'>
  ...
  <security:intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY"/>
  <security:form-login login-page="/login" default-target-url="/sites"
                     authentication-failure-url="/login"
                     authentication-success-handler-ref="authenticationSuccessHandler"/>
 ...

到目前为止,这是我们的配置。

代码语言:javascript
复制
  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http
       .authorizeRequests()
          .anyRequest().authenticated()
          .and()
        .formLogin()
          .loginPage("/login")
          .failureUrl("/login")
          .and()
        .logout()
          .permitAll()
          .and()
  }

此外,我们找不到将default-target-url放在哪里,但这绝对不那么重要。

注意,我们实际上使用的是Groovy,但代码基本上与Java配置相同。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-14 04:11:42

所有设置都可以在全局配置方法中完成。添加以下内容:

代码语言:javascript
复制
@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
          .anyRequest().authenticated()
          .and()
        .formLogin()
          .loginPage("/login")
          .defaultSuccessUrl("/sites")
          .failureUrl("/login")
          .successHandler(yourSuccessHandlerBean) // autowired or defined below
          .and()
        .logout()
          .permitAll()
          .and()
  }
票数 26
EN

Stack Overflow用户

发布于 2014-01-14 02:03:31

您必须创建扩展SimpleUrlAuthenticationSuccessHandlerSavedRequestAwareAuthenticationSuccessHandler的bean。例如:

代码语言:javascript
复制
@Bean
public SavedRequestAwareAuthenticationSuccessHandler successHandler() {
    SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
    successHandler.setTargetUrlParameter("/secure/");
    return successHandler;
}

然后,您必须在扩展AbstractAuthenticationProcessingFilter的bean上设置它

代码语言:javascript
复制
UsernamePasswordAuthenticationFilter authenticationFilter = new UsernamePasswordAuthenticationFilter();
authenticationFilter.setAuthenticationSuccessHandler(successHandler());
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21097528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档