本文使用的springboot版本是2.1.3.RELEASE
本文记录下在springsecurity中如何对方法进行权限控制
前边用http.authorizeRequests()
实现了对web资源的保护,如果要实现基于方法的权限控制,springsecurity也提供了两类注解来实现。@PreAuthorize,@Secured
在安全配置类上加上注解@EnableGlobalMethodSecurity
开启方法权限控制
@Configuration
@EnableGlobalMethodSecurity(securedEnabled = true)//开启方法权限控制
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
//用户配置
//安全配置
}
在需要进行权限控制的方法上加注解,类或接口中都可以
public interface ResourceService {
//这个方法允许匿名访问
@Secured("IS_AUTHENTICATED_ANONYMOUSLY")
String res1();
//这个方法要有p1角色才能访问
@Secured("ROLE_P1")
String res2();
//这个方法要有P1或p2角色才能访问
@Secured({"ROLE_P1","ROLE_P2"})
String res3();
}
这样这三个方法就受权限控制了。
在安全配置类上加注解
@Configuration
@EnableGlobalMethodSecurity(securedEnabled = true,prePostEnabled = true)//开启方法权限控制
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
//用户配置
//安全配置
}
public interface ResourceService {
//匿名访问
@PreAuthorize("isAnonymous()")
String res4();
//拥有角色1,角色名要带ROLE_前缀
@PreAuthorize("hasRole(‘ROLE_P1‘)")
String res5();
}
以上示例了在spring security中如何进行方法级的权限控制。分为两步,第一,在配置类上开启方法权限控制
第二步,在对应的方法上加上控制注解指定权限。
完整的示例工程: 示例工程
认证和授权学习3:springsecurity实现方法级的权限控制
原文:https://www.cnblogs.com/chengxuxiaoyuan/p/13973495.html