如何优雅的使用切面和注解实现权限验证

背景

权限验证在我们系统中是一个与业务逻辑无关但是又与业务息息相关的一个功能。如何优雅的在项目中实现权限验证就是本文重点介绍的内容。

设想我们开发了一款为中小型企业定制的会员系统。这款系统可以为企业A、企业B等多种企业提供服务。数据库中的表结构往往是这样的(以下只是一个demo,实际情况中字段一定会更多、更复杂):

id memberCardCode userName card_status business
1 a564456578 zhangsan 0 business-a
2 b678688643 lisi 1 businsss-b
3 a775445667 wangwu 0 businsss-a
4 b943578978 zhaoliu 1 businsss-b
5 c657688799 sunqi 1 businsss-c

基于上表,我们删除id = 1的会员往往是这样操作的(假设是物理删除):

controller层:

@RestController("/member")
public class MemberController {
   
    @PostMapping("/delete")
    public void deleteById(int id) {
   
        // 此处省略删除代码
    }
}

最终在controller中调用的SQL语句是这样的:

delete from member where id = 1;

乍一看,就这样一条简单sql语句能有什么问题呢?其实越是简单的问题,越不能放过。
通过上表我们看到id = 1的会员信息是属于business-a的。所以理应是business-a的账号才能删除id = 1的会员信息。那此时如果business-b在删除会员的时候将参数id改为1&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值