首先是启用方法级别的权限控制
@EnableGlobalMethodSecurity 开启Spring Security 全局方法安全
@EnableGlobalMethodSecurity 可以配置多个参数
prePostEnabled :决定Spring Security的前注解是否可用 [@PreAuthorize,@PostAuthorize,..]
secureEnabled : 决定是否Spring Security的保障注解 [@Secured] 是否可用
jsr250Enabled :决定 JSR-250 annotations 注解[@RolesAllowed..] 是否可用.
1.@Secured
功能:
支持单一角色或者多个角色之间的任何一个角色,不支持spring EL表达式
2.@PreAuthorize
注解适合进入方法前的权限验证, @PreAuthorize可以将登录用户的roles/permissions参数传到方法中。
例子:
@PreAuthorize("hasRole('ADMIN')") 拥有ADMIN角色权限才能访问
@PreAuthorize("hasRole('ADMIN') AND hasRole('DBA')") 拥有ADMIN角色和DBA角色权限才能访问
@PreAuthorize("hasAnyRole('ADMIN','DBA')") 拥有ADMIN或者DBA角色均可访问
3.@PostAuthorize
注解使用并不多,在方法执行后再进行权限验证。
@PreAuthorize / @PostAuthorize 注解更适合方法级的安全,也支持Spring 表达式语言,提供了基于表达式的访问控制。
https://www.leftso.com/article/177.html