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项目控制台中文乱码
