自定义权限校验方法

HeJin小于 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";
    }

}