我们的应用程序具有用于成功登录的自定义成功处理程序。基本上,它们会将他们重定向到会话过期时所在的页面。
我们将转向Java配置而不是spring xml配置。其余配置非常顺利,但是我们找不到在哪里放置security:form- login标记的authentication-success-handler-ref属性。
<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"/> ...
到目前为止,这是我们的配置。
@Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .failureUrl("/login") .and() .logout() .permitAll() .and() }
另外,我们找不到默认目标网址的放置位置,但这绝对不那么重要。
请注意,我们实际上是在使用Groovy,但是代码基本上与Java配置相同。
所有设置都可以在全局configure方法内完成。添加以下内容:
@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() }