【发布时间】:2014-08-23 05:08:03
【问题描述】:
我正在尝试使用 Java 配置设置 Spring Security + mvc,但由于某种原因它不起作用,我收到 404 错误。
在我实现的 WebApplicationInitializer 类中,我注册了安全过滤器
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
...
FilterRegistration.Dynamic securityFilterChain = servletContext.addFilter("springSecurityFilterChain", DelegatingFilterProxy.class);
securityFilterChain.addMappingForUrlPatterns(null, false, "/*");
..
SecurityContext 列表
@Configuration
@EnableWebSecurity
public class SecurityContext extends WebSecurityConfigurerAdapter {
@Autowired
UserDetailsService userDetailsService;
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
// BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
// auth.userDetailsService(userDetailsService).passwordEncoder(encoder);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/assets/**").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/profile/**").hasAnyRole("ADMIN", "USER")
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/profile")
.failureUrl("/login?error")
.usernameParameter("username")
.passwordParameter("password")
.permitAll()
// .and()
// .logout()
// .logoutUrl("/logout")
// .logoutSuccessUrl("/")
// .permitAll()
.and()
.exceptionHandling().accessDeniedPage("/403");
}
}
对于 logoutUrl,我尝试了所有组合但没有运气... 当我尝试在我的 jsp 页面中使用此链接时
<c:url value='/j_spring_security_check' />
我收到 404 not found 异常。
我花了一整天的时间试图让它发挥作用。有没有人知道如何解决这个问题?
PS 如果我将 logoutUrl 设置为“/logout”,我是否应该制作一个控制器来处理这个 url?
【问题讨论】:
标签: java spring-mvc spring-security logout