SpringSecurity @PreAuthorize注解引用yml变量

这是原本在Controller层配置的角色权限注解,可以看到角色控制符(0,1,2)都是固定写死的,可读性较差,若数据库中的role字段内容更新不易于维护代码。

    @GetMapping("/{uid}")
    @PreAuthorize("hasAnyAuthority('0', '1', '2')")
    public R searchPersonalInfo(@PathVariable int uid) {
        return userService.findUserInfoByUid(uid);
    }

所以可以通过@environment.getProperty()注解方法来引用.yml配置文件中的自定义变量,实现动态更新。

以下是application.yml的角色信息配置

role:
  other: 0
  manager: 1
  root: 2

原方法修改为以下内容 

    @GetMapping("/{uid}")
    @PreAuthorize("hasAnyAuthority(@environment.getProperty('role.other'), @environment.getProperty('role.manager'), @environment.getProperty('role.root'))")
    public R searchPersonalInfo(@PathVariable int uid) {
        return userService.findUserInfoByUid(uid);
    }

注意:不能直接使用${}表达式直接引用yml变量,因为@PreAuthorize注解会将整个表达式(包括${})都看成是一个字符串,而不会去搜索yml配置文件中的具体变量值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值