1 回答
TA贡献1847条经验 获得超11个赞
假设您有这样的 WebSecurity 配置。你只需要添加一个successHandler
@Configuration
@EnableWebSecurity
public class SecSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private SimpleAuthenticationSuccessHandler successHandler;
@Bean("authenticationManager")
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
// @formatter:off
auth.inMemoryAuthentication()
.withUser("user1").password("{noop}user1Pass").roles("USER")
.and()
.withUser("admin1").password("{noop}admin1Pass").roles("ADMIN");
// @formatter:on
}
@Override
protected void configure(final HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/anonymous*").anonymous()
.antMatchers("/login*").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login.html")
.loginProcessingUrl("/login")
.successHandler(successHandler)
// ...
}
}
SimpleAuthenticationSuccessHandler 类
// Change onAuthenticationSuccess logic as per your requirement
@Component
public class SimpleAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
@Override
public void onAuthenticationSuccess(HttpServletRequest arg0, HttpServletResponse arg1, Authentication authentication)
throws IOException, ServletException {
redirectStrategy.sendRedirect(arg0, arg1, "/home");
/*
Collectionextends GrantedAuthority> authorities = authentication.getAuthorities();
authorities.forEach(authority -> {
if(authority.getAuthority().equals("ROLE_USER")) {
try {
redirectStrategy.sendRedirect(arg0, arg1, "/user");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if(authority.getAuthority().equals("ROLE_ADMIN")) {
try {
redirectStrategy.sendRedirect(arg0, arg1, "/admin");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
throw new IllegalStateException();
}
});
*/
}
}
这会将您的调用重定向到"/home",控制器将进一步负责加载您的对象。
添加回答
举报