我的Spring Security存在问题
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UsuarioService usuarioService;
@Autowired
private PasswordEncoder passwordEncoder;
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.authorizeRequests()
.antMatchers(
"/",
"/index/**",
"/register",
"/doregister",
"/login",
"/dologin",
"/logout-success",
"/confirmregister",
"/invaliduser",
"/expiredtoken",
"/userstatuslog",
"/verifyemail")
.permitAll()
.anyRequest()
.authenticated()
.and()
.authorizeRequests()
.antMatchers(
"/login",
"logout")
.permitAll()
.and()
.authorizeRequests()
.antMatchers(
"/static/css/**",
"/css/custom.css",
"/js/**",
"/images/**"
)
.permitAll()
.and()
.authorizeRequests()
.antMatchers(
"/forbidden",
"/edit-profile-about",
"/doeditprofileabout",
"/profile"
)
.hasRole("USER")
.and()
.authorizeRequests()
.antMatchers(
"/controlpanel",
"/forbidden",
"/edit-profile-about",
"/doeditprofileabout",
"/profile"
)
.hasRole("ADMIN")
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
.permitAll()
.and()
.logout()
.deleteCookies("remove")
.invalidateHttpSession(true)
.logoutUrl("/logout")
.logoutSuccessUrl("/logout-success")
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
// @formatter:on
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(usuarioService).passwordEncoder(passwordEncoder);
}
每次,我登录它都会把我发送到bootstrap文件...
本地主机:8080 / CSS /自举-3.3.7-DIST / CSS / bootstrap.min.css
...或
本地主机:8080 / CSS / custom.css
...或
本地主机:8080 / JS / jQuery的2.1.4.min.js
但不是同一个(似乎是随机的!: - )
然后有时 CSS 有效,有时则无效。在登录表单中它没有样式,但有时只有,因为当我运行应用程序时,它有样式。当我也登录时,但不是当我退出或尝试再次登录时。因此,当用户正确登录时,它再次具有样式。
当我尝试使用用户(使用ROLE_USER)访问“/ controlpanel”时,它允许访问(并且它不应该),但是当我使用用户(Role_ADMIN)时,它可以正常工作。
答案 0 :(得分:0)
问题是guest虚拟机无法访问您的css文件。登录后,您将被重定向回到它。有时登录页面中的css因浏览器缓存而起作用。
尝试将配置更改为
http
.authorizeRequests()
.antMatchers(
"/",
"/index/**",
"/register",
...).permitAll()
.antMatchers(
"/login",
"logout").permitAll()
.antMatchers( // You need to add all css file here
"/static/css/**",
"/css/custom.css",
"/css/bootstrap-3.3.7-dist/css/bootstrap.min.css",
"/js/**",
"/images/**").permitAll()
.antMatchers(
"/forbidden",
"/edit-profile-about",
"/doeditprofileabout",
"/profile").hasRole("USER")
.antMatchers(
"/controlpanel",
"/forbidden",
"/edit-profile-about",
"/doeditprofileabout",
"/profile").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
...
答案 1 :(得分:0)
当您的静态资源被Spring Security过滤时会发生这种情况。
尽量忽略这些资源:
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/path/**");
}
定义模式以满足您的所有位置。