我正在尝试制作一个Web应用程序,该应用程序使用:SpringBoot、Mysql、JDBC、MVC、DAO、百里香叶、IntelliJ
我试图弄清楚Spring安全性是如何工作的(我在这方面遇到了很多困难)。
resources(folder): - ________static(folder)
|____templates(folder):__________images(folder)
|___userOnly(folder):_____header.html
| |__help.html
| |__menu.html
| |__newDocForm.html
| |__profil.html
|
|__firstPage.html
|__header.html
|__home.html
|__index.html
|__inscriptionForm.html
|__loginPage.html
我想做的是,未识别的用户可以访问所有的视图,除了那些包含在“userOnly”和我的“loginPage”页被用作登录页。
如果我理解正确的话,我必须创建一个继承自“WebSecurityConfigurerAdapter”的类。我已经做了什么。然后配置“configure”,我不能正确地做:(
@Configuration
@EnableWebSecurity
public class SecSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(final HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/userOnly/**").hasRole("USER")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/loginPage.html");
}
}
对不起,如果我的问题似乎奇怪,但英语不是我的第一语言
3条答案
按热度按时间brtdzjyr1#
从Spring-Boot 2.7开始,
WebSecurityConfigurerAdapter
的使用已经过时了。如果你使用的是Spring-Boot 2.6或更早的版本,其他的答案可能更适合你。据我所知,在Spring-Boot 2.7中定义安全配置的推荐方法如下:
在
voucher_wolves
的答案中使用web.ignoring(),我认为是不推荐的,相反,应该将这些情况添加到http.mvcMatcher().permitAll()
中。顺便说一句,我个人建议将公共页面加入白名单,并为其他所有内容添加身份验证(例如公共文件夹)。这样,如果你忘记为链接添加安全性,默认情况下它是不公开的。wgmfuz8q2#
您需要告诉Spring安全性哪些URL是公共的,例如-
使用OrRequestMatcher,您可以创建需要公开的所有URL的列表。您还可以使用NegatedRequestMatcher获取所有专用URL
我还建议您将所有公共URL保存在/src/main/resources/static/publicui下,将所有私有URL保存在/src/main/resources/static/privateui下,并对/publicui/* 拥有公共权限
u0sqgete3#
请在SecSecurityConfig类中尝试以下操作
只需修改您的应用程序的参数设置。如果您没有登录表单,您可以跳过