springSecurity标签,特别是@PreAuthorize
spring security中可以通过表达式控制方法权限:
-
@PreAuthorize @PostAuthorize @PreFilter @PostFilter
其中前两者可以用来在方法调用前或者调用后进行权限检查,后两者可以用来对集合类型的参数或者返回值进行过滤。
使用@PreAuthorize和@PostAuthorize进行访问控制
@PreAuthorize可以用来控制一个方法是否能够被调用
Controller层
/** * 根据用户编号获取详细信息 */ @PreAuthorize("@ss.hasPermi(system:user:query)") @GetMapping(value = { "/", "/{userId}" }) public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) { ... ... ... }
对应service层
@Service("ss") public class PermissionService { /** * 验证用户是否具备某权限 * * @param permission 权限字符串 * @return 用户是否具备某权限 */ public boolean hasPermi(String permission) { } }
@PreAuthorize("@ss.hasPermi(‘system:user:query’)")表示:
-
@ss标签对应的PermissionService hasPermi方法 传入参数为system:user:query,表示用户的查询权限
@PostAuthorize目前并没有碰到
使用@PreFilter和@PostFilter进行过滤
使用@PreFilter和@PostFilter可以对集合类型的参数或返回值进行过滤。
使用@PreFilter和@PostFilter时,Spring Security将移除使对应表达式的结果为false的元素。 目前碰到的不多。
上一篇:
IDEA上Java项目控制台中文乱码