我刚接触Spring Security,正在检查如何授权对应用程序中URL的请求。
根据文档here,我们添加了以下授权:
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/resources/**", "/signup", "/about").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')")
.anyRequest().authenticated()
.and()
// ...
.formLogin();
}
由于此方法对我来说效果很好,我想知道是否还有另一种动态方式指定此配置。例如,通过为我们的REST控制器使用某种注释?
我想到了一个切实可行的解决方案,但是我想确保在开始开发自己的代码之前,没有其他方法可以这样做。
谢谢您的帮助。
答案 0 :(得分:2)
是的,注释为@Secured/@PreAuthorize/@PostAuthorize
。该批注是应用方法级安全性的首选方法,并且开箱即用地支持Spring Expression Language,并提供基于表达式的访问控制。
例如
@PreAuthorize("hasRole('ADMIN')")
public String yourControllerMethod() {
return response;
}
有关详细信息,请检查here.
答案 1 :(得分:1)
唯一的其他方法是使用@ Secured / @ PreAuthorize / @ PostAuthorize批注。但是您必须将它们放在要保护的所有Web服务上。
通常,当我构建Web服务应用程序时,我希望对WebSecurityConfigurerAdapter上的所有请求进行授权,然后使用这些批注逐个保护请求。