因此,我有一个Web应用程序,它有三组不同的角色。其中一组角色应该允许任何人查看,即使他们没有登录。还有一组页面,用户必须登录才能查看,但如果他们具有“候选人”角色,则无法访问。最后,“候选人”角色可能只能查看/candidate/ID中的页面
基本上,是否有一种方法可以阻止对除下面列出的链接之外的任何URL(基本上为“/**”)的访问?或者,我是否需要指定每个链接,例如/dashboard /profile
http.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/index").permitAll()
.antMatchers("/static/**").permitAll()
.antMatchers("/assets/**").permitAll()
.antMatchers("/register").permitAll()
.antMatchers("/skillRequest/**").permitAll()
.antMatchers("/skillRequest/skillFormUpdate/**").permitAll()
.antMatchers("/password/reset").permitAll()
.antMatchers("/password/reset/complete").permitAll()
.antMatchers("/email/verify").permitAll()
.antMatchers("/view/**").permitAll()
.antMatchers("/embed/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/dashboard", false) //Force user to always go to the home page.
// .successHandler(successHandler())
.permitAll()
.and()
.httpBasic()
.and()
.logout()
.permitAll();
4条答案
按热度按时间ibrsph3r1#
为了达到我的目的我只需要加上
.antMatchers("/**").not().hasAuthority("ROLE_CANDIDATE")
在我想要从匹配器中排除的任何URL之后
0s0u357o2#
我们可以用Spring安全标签
例如:
如上所述,使用
!
和(not)
运算符。zrfyljdw3#
我发现把上面这行作为最后一个antmatchers对我很有效。它阻塞了所有声明在以前的antmatchers上的API
myzjeezk4#
不如这样: