我在spring安全配置中使用了一个过滤器,因此除了用户名和密码之外,我还可以从登录页面获得更多参数。这是用于身份验证的筛选器:
public SimpleAuthenticationFilter authenticationFilter() throws Exception {
SimpleAuthenticationFilter filter = new SimpleAuthenticationFilter();
filter.setAuthenticationManager(authenticationManagerBean());
filter.setAuthenticationFailureHandler(failureHandler());
filter.setAuthenticationSuccessHandler(successHandler());
return filter;
}
这就是成功处理程序。我原以为这会像它一样工作。defaultsuccessurl(“/home”,false),但它不是。。。
public SimpleUrlAuthenticationSuccessHandler successHandler() {
SimpleUrlAuthenticationSuccessHandler successHandler = new SimpleUrlAuthenticationSuccessHandler();
successHandler.setDefaultTargetUrl("/home");
successHandler.setAlwaysUseDefaultTargetUrl(false);
return successHandler;
}
这是安全配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilterBefore(authenticationFilter(), UsernamePasswordAuthenticationFilter.class)
.authorizeRequests()
.antMatchers(resources).permitAll()
.antMatchers("/somePage").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.and()
.logout()
.logoutSuccessUrl("/login")
.and()
.csrf().disable();
}
你知道我遗漏了什么吗?目标是跳过默认的目标url。
非常感谢。
1条答案
按热度按时间9w11ddsr1#
我的意图是在认证后直接访问url页面。。。因为它起作用了
.defaultSuccessUrl("/home", false)
; 但是马库斯给了我解决问题的主意!我所要做的就是这样更改successhandler的类:现在它工作了:)。非常感谢你的帮助!!