使用.ignoring()的Spring WebSecurity配置不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用.ignoring()的Spring WebSecurity配置不起作用相关的知识,希望对你有一定的参考价值。
我已经为此奋斗了几天。除了通过简单地评论一些代码,运行程序,然后取消注释并再次运行似乎不一致和不可预测地发生的古怪事物,我无法理解覆盖各种配置方法是如何工作的。
我希望WebSecurity始终忽略“/ static / **”。
在启动应用程序并导航到主页后,我可以访问我允许所有页面的所有页面,但是在我导航到登录页面之后,“/ static / **”中的所有内容都被忽略。以经过身份验证的用户身份登录。因此,应用程序只显示为带有文本的白页,在登录之前根本没有任何样式。
这是我的AppSecurityConfig类的代码。我省略了用于处理登录成功和失败的帮助方法,并且我还必须使用不同角色的不同帐户类型,因此我在此处仅包含一个帐户以简化。我认为存在问题的部分是在configure(WebSecurity web)方法中,我调用.ignoring()方法并传递“/ static / **”arg。先感谢您:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private CompanyService companyService;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(companyService);
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/static/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/",
"/account_registration",
"/candidate_registration",
"/addCandidate",
"/company_registration",
"/addCompany",
"/select_account_type",
"/candidate_login",
"/company_login").permitAll()
.antMatchers("/company_profile").hasRole("COMPANY")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/company_login")
.permitAll()
.successHandler(companyLoginSuccessHandler())
.failureHandler(companyLoginFailureHandler())
.and()
.logout()
.logoutSuccessUrl("/");
}
}
我的静态文件夹的路径是“src / main / resources / static”,但我做了Sam所说的并打开了开发人员工具,并意识到“静态”目录中的所有内容都是直接引用的。例如,有以这种方式引用的目录:“/ vendor / ...”和“/ images / ...”,它们被引用但由于安全性而被忽略。 “静态”目录中还有一些文件,如“app.css”,“app.js”和“favicon.png”,它们有一些奇怪的行为。它们似乎没有被忽略,但是显示了不同的颜色和样式,除非我还将它们作为参数添加到.gitIgnoring()方法,如“/app.css”等。这个项目是通过TeamTreehouse教程和然后在我的6人团队中的几个人之间重构和添加自定义样式,我很确定在这个项目中继承了很多东西,我自己和前端人员在样式方面都不理解。
似乎有用的修复,虽然可能不太理想,但是从.ignoring()方法中删除“/ static / **”并将其替换为实际位于“static /”目录中的所有内容:
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers( "/images/**",
"/vendor/**",
"/app.css",
"/app.js",
"/favicon.png");
}
以上是关于使用.ignoring()的Spring WebSecurity配置不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 tomcat 9 上部署 Spring Boot Web 应用程序时,出现错误“无法检索系统属性'spring.xml.ignore'”
es报错:request contains unrecognized parameter [ignore_throttled]
es报错:request contains unrecognized parameter [ignore_throttled]
在第 7 行调用 C:\wamp\www\Webs\client.php 中未定义的函数 sqlsrv_connect()