SpringSecurity的自定义授权

补充一个小问题

@PreAuthorize("hasAuthority('sys:admin:list')")
@RequestMapping("/more")
public String more(){
    return "success";
}

这段权限代码中,必须使用public修饰符,如果使用private则权限设置会失效

1.1 思路分析

LoginUser类

1.在LoginUser类中新增一个List<String>属性一个List<GrantedAuthority>属性,包含着权限信息

2.重写getAuthorities()方法(因为权限信息需要从该方法中取得),将List<String>封装到List<GrantedAuthority>中对应getAuthorities方法的返回值。

3.对List<GrantedAuthority>属性取消JSON序列化,否则反序列化会出错

UserDetailServiceImpl类

1.补充获取权限方法,这里先给出权限,后续会从数据库中查询。返回loginUser对象

JwtAuthoriTokenFilter类

1.在对应权限获取的构造方法中,利用getAuthorities()方法传递权限,封装到SecurityContextHolder中等待被访问。

SecurityConfig

1.开启权限。@EnbaleGlobalMethodSecurity(prePostEnabled=true)

SecurityController类

1.添加注解权限@PreAuthorize("hasAuthority('sys:test')")

1.2 实现

在domain类中新增权限集合属性

去权限并封装带LoginUser中

将获取LoginUser中权限信息并封装到Authentication对象中,最终封装到 SecurityContextHolder中。因为其他过滤器会从中取得用户信息

 开启权限校验

设置权限字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值