@PreAuthorize权限控制的原理
@PreAuthorize是SpringSecurity提供的权限安全认证注解。是在进⼊⽅法前进⾏权限验证,@PreAuthorize 声明这个⽅法所需要的权限表达式,例如:@PreAuthorize("hasAuthority('sys:dept:delete')")。
1.添加依赖
<!-- oauth -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>
springboot原理视频<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-jwt</artifactId>
</dependency>
2. ⽅法前增加注解@PreAuthorize
@PreAuthorize("@ss.hasRole('sys:user:add')")
public void addUser(User user) {
System.out.println("." + user);
}
上⾯的注解标识在进⼊⽅法addUser之前,进⾏权限认证。是否拥有user的add权限。其中ss表⽰hasRole⽅法所在的类。如:
@Service("ss")
public class PermissionService
{
/**
* 验证⽤户是否具备某权限
*/
public boolean hasPermi(String permission){
...
return true;
}}
3. 参数验证
/**
* 限制只能新增⽤户名称为david的⽤户
*/
@PreAuthorize("#user.name.equals('david')")
public void add(User user) {
}
调⽤find(String username)时只允许username为当前⽤户的⽤户名;定义了调⽤add()⽅法时只有当参数user的name为david时才可以调⽤。/**
* 限制只能查询Id⼩于100的⽤户
*/
@PreAuthorize("#id<100")
public User find(int id) {
System.out.println("find user ." + id);
}
在上⾯代码中我们定义了调⽤find(int id)⽅法时,只允许参数id⼩于10的调⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。