Spring Security没有做到这一点

时间:2018-04-26 10:11:05

标签: java spring spring-security

Atm我有一个问题,登录页面基本上什么都不做,因为如果你插入一个页面的url,你可以跳过登录。

我正在使用这个

 @Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests().antMatchers("/").hasAnyRole("Administrator" , "Member")
            //.anyRequest().authenticated()
            .and()
            .formLogin().permitAll()
                .loginPage("/login").permitAll()
                .defaultSuccessUrl("/dashboard")
                .failureUrl("/login?error")
                .successHandler(authenticationSuccessHandler)
            .and()
            .logout()
                .logoutUrl("/logout")
                .logoutSuccessUrl("/login")
                .logoutSuccessHandler(logoutSuccessHandler)
            .and()
            .csrf().disable();
}

请注意//.anyRequest().authenticated()已发表评论。这条线似乎可以保护我的网站不通过URL访问,它会重定向到登录页面。

但如果我拥有它,我就无法在我的页面中看到css而且我得到了

  

拒绝应用“http://localhost:8080/login”的风格,因为它的风格   MIME类型('text / html')不是受支持的样式表MIME类型,和   严格的MIME检查已启用。

如何保护我的网站不知道网址,还能看到登录页面中的CSS?

2 个答案:

答案 0 :(得分:1)

取消注释anyRequest.authenticated 然后,您必须授权访问您的静态资源。

antMatcher("/css/**").permitAll()

对javascript和其他静态资源执行相同的操作。

完整配置:

   http.authorizeRequests().antMatchers("/").hasAnyRole("Administrator" , "Member")
    .anyRequest().authenticated()
    .and()
    .authorizeRequests()
        .antMatchers("/css/**").permitAll()
    .and()
    .formLogin().permitAll()
        .loginPage("/login").permitAll()
        .defaultSuccessUrl("/dashboard")
        .failureUrl("/login?error")
        .successHandler(authenticationSuccessHandler)
    .and()
    .logout()
        .logoutUrl("/logout")
        .logoutSuccessUrl("/login")
        .logoutSuccessHandler(logoutSuccessHandler)
    .and()
    .csrf().disable();

答案 1 :(得分:0)

我通常会为我的资源配置覆盖其他配置的访问权限,与您所描述的配置相对应:

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/resources/**");
}

对我来说似乎更有条理。您可以在Spring配置类中添加它,并通过css更改“资源”。我通常打开'资源'并将我的CSS放在(在子目录中),因为它适用于各种资源,如图像,CSS等。