当用户未经过身份验证时,Spring安全性不会重定向到登录页面

时间:2015-08-20 08:42:08

标签: java spring spring-mvc spring-security

我正在尝试阻止访问我网站中的网页,但下面的安全配置并不限制对私人网页的访问。

我的安全配置:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Resource
    private UserService detailsService;

    @Override
    protected void configure(HttpSecurity http)
        throws Exception {
        http.authorizeRequests().antMatchers("/passwordrequest/**", "/initSystem").permitAll().anyRequest()
            .authenticated().and().formLogin().loginPage("/login").usernameParameter("email").permitAll().and()
            .logout().permitAll().and().csrf().disable();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth)
        throws Exception {
        auth.userDetailsService(detailsService);
    }
}

我有一个/login控制器,可以将用户放到模型上,以便我可以评估他们的信息。我已根据需要实施了UserDetailsUserDetailsService

请告知可能出现的问题。 (如果您希望我添加一些特定代码,请告诉我们)

2 个答案:

答案 0 :(得分:0)

检查您的web.xml中是否配置了spring安全过滤器,以拦截您的所有安全请求。

  <filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

答案 1 :(得分:-1)

您的配置中的私人网页在哪里?你需要有这个配置。 例如:

http.authorizeRequests()
        .antMatchers("/adminpage/**").access("hasRole('ROLE_ADMIN')")
        .antMatchers("/privatepage/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_USER')")
        .and().formLogin();