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?
答案 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等。