springsecurity的注解权限管理
时间: 2023-07-06 13:22:26 浏览: 95
Spring Security提供了一些注解来简化权限管理的配置。使用注解可以使代码更加简洁易懂,同时也可以提高开发效率。
下面介绍几个常用的注解:
1. @EnableGlobalMethodSecurity
这个注解用来启用方法级别的安全控制。它有三个属性:
- prePostEnabled:启用@PreAuthorize和@PostAuthorize注解,默认为false。
- securedEnabled:启用@Secured注解,默认为false。
- jsr250Enabled:启用@RolesAllowed注解,默认为false。
在使用注解进行权限管理时,需要在配置类上添加@EnableGlobalMethodSecurity注解并设置相应的属性。
```java
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
...
}
```
2. @PreAuthorize和@PostAuthorize
这两个注解用来控制方法调用前和调用后的访问权限。
@PreAuthorize注解表示在方法调用前进行权限检查,只有通过检查才能调用方法。例如:
```java
@PreAuthorize("hasRole('ADMIN')")
public void addUser(User user) {
...
}
```
在上面的示例中,只有具有“ADMIN”角色的用户才能调用addUser方法。
@PostAuthorize注解表示在方法调用后进行权限检查,只有通过检查才能返回结果。例如:
```java
@PostAuthorize("hasRole('ADMIN')")
public User getUserById(int id) {
...
}
```
在上面的示例中,只有具有“ADMIN”角色的用户才能得到getUserById方法的返回结果。
3. @Secured和@RolesAllowed
这两个注解用来控制方法调用的访问权限。
@Secured注解表示只有具有指定角色的用户才能调用方法。例如:
```java
@Secured("ROLE_ADMIN")
public void deleteUser(int id) {
...
}
```
在上面的示例中,只有具有“ROLE_ADMIN”角色的用户才能调用deleteUser方法。
@RolesAllowed注解与@Secured注解类似,也是表示只有具有指定角色的用户才能调用方法。例如:
```java
@RolesAllowed("ROLE_ADMIN")
public void updateUser(User user) {
...
}
```
在上面的示例中,只有具有“ROLE_ADMIN”角色的用户才能调用updateUser方法。
总的来说,以上就是使用注解进行权限管理的一些基本介绍。注解可以使代码更加简洁易懂,同时也可以提高开发效率。但是,在使用注解时需要注意注解的作用范围,不要让注解的作用范围过大或过小。
阅读全文