自定义权限校验方法
小于 1 分钟Spring全家桶SpringSecurity认证授权
我们可以定义自己的权限校验方法,在@PreAuthorize注解中使用。
@Component("customExpressionRoot")
public class CustomExpressionRoot {
public boolean hasAuthority(String authority){
// 获取当前用户的权限
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
List<String> permissions = loginUser.getPermissions();
// 判断用户权限集合中是否存在authority
return permissions.contains(authority);
}
}
使用SpEL表达式使用自定义的权限校验方法
@RestController
public class HelloController {
@GetMapping("/test")
@PreAuthorize("@customExpressionRoot.hasAuthority('system:test:list')")
public String test(){
return "hello SpringSecurity";
}
}