【发布时间】:2019-11-21 04:40:18
【问题描述】:
授权前
我使用任何帐户登录后
有谁知道怎么回事?没有线索。
【问题讨论】:
-
欢迎来到stackoverflow。三是目前信息太少无法给大家解答。请添加上述页面以及您的配置。请将它们添加为文本并使用正确的代码标签。
标签: spring model-view-controller spring-security
授权前
我使用任何帐户登录后
有谁知道怎么回事?没有线索。
【问题讨论】:
标签: spring model-view-controller spring-security
似乎您的 css 没有为不安全的上下文加载。要添加资源,请在 WebMvcConfigurer 中创建如下资源处理程序条目
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!registry.hasMappingForPattern(URL_PATTERN_UICONTENT)) {
registry.addResourceHandler(URL_PATTERN_UICONTENT).addResourceLocations("classpath:/uicontent/").setCachePeriod(31556926);
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
}
【讨论】:
问题已解决!
我创建了类
@Configuration
@EnableWebMvc
public class WebMVCConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
}
这样的话,我说/static/**如果有这个前缀的任何页面请求,所以尝试在classpath中查找:static
在我的索引 thymeleaf 文件中,我包括外部 css 文件:
<link href="../static/css/bootstrap.min.css" th:href="@{static/css/bootstrap.min.css}" rel="stylesheet" />
上面的这个例子展示了如何在应用程序应该找到静态资源的地方添加路由,但这实际上在我的项目中不是必需的。
问题是当你在登录之前尝试访问静态资源时,你应该在 WebSecurityConfig 类中授予它的权限,如下所示:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/index", "/login","/css/**", "/webjars/**", "/images/**", "/js/**").permitAll()
.antMatchers("/subscribers", "/calldetails").access("hasAnyRole('ROLE_USER', 'ROLE_ADMIN')")
.antMatchers("/divisions").access("hasAnyRole('ROLE_ADMIN')")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login?logout")
.permitAll();
【讨论】: