基于Controller方法注解的极简权限控制解决方案

背景

因项目需要做比较详细的权限控制,大致了解了sprin sercurity、shiro两个名气比较大的权限管理框架。

得到的结论是:功能足够强大,用户、权限、认证等等,你想到的它全都有,没想到的也有。但是我并不需要这么多功能(项目的用户认证已由其他方案完成,现只需要权限控制)。而且连号称轻量级的shiro我也觉得太庞大了些。因此,决定根据项目需求自己实现一套极简权限控制方案。

关于权限的数据库表

表结构不是本文重点,简单提一下。与权限相关的表:

  • 用户表
  • 角色表
  • 权限表(非必要,除非要做细粒度、可配置)
  • 用户角色表
  • 角色权限表

基于接口的权限控制

如何实现控制
  1. 根据当前session提供的用户信息,查询到该用户的角色
  2. 通过反射获取到当前访问的接口的注解,用注解里面的值去与数据库中该用户角色的权限集合(可以缓存)比对,有权限则通过,否则拒绝。
为什么要基于controller

客户端与服务端的交互是以http请求为单位的,所以基于请求进行权限控制是比较合理的选择。

实现

写一个注解类
/**
 * 权限控制注解。
 * @author yangsheng
 * @Date  2019/8/1 14:08
 */
@Target(ElementT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值