关于权限控制的讨论

十年前,我们是如何做权限控制的?如何定义permission?
那时候,我们都基于纯纯的JSP/Servlet做系统,权限的定义依据的是URL。
某个用户(角色)拥有对某个URL的访问权限。
那个时候的URL都长得很像。

http://mydomain.com/channelAAA/edit.do?id=0000
http://mydomain.com/channelBBB/show.do/?id=1111

在这个URL中,包含了三个信息:

  1. 资源,比如 /channelAAA 或者 /channelBBB
  2. 操作,比如 edit.do 或者 show.do
  3. 实例,比如 id=00000

所以说,其实权限的定义无非就是对某个资源的某个实例的某个操作。

后来,我们的权限定义进步了,我们可以利用反射简化一些事情。于是,权限定义到了类里面,比如我们可以放在某个Controller里面。

public UserController {
  public BaseResponse showUser(string id){...}
  public BaseResponse deleteUser(string id){...}
}

其实,在这个类里,也包含了三个信息:

  1. 资源,就是类,比如UserController,PaymentController等
  2. 操作,就是方法,比如 showUser , deleteUser等
  3. 实例,就是参数,比如 id等

如此看来,其实还是有渊源的。。。

那么今天,我们又如何定义权限呢?Shiro帮我们做了很好的抽象。

资源:操作:实例

所以说,真的是很有渊源的。

if ( SecurityUtils.getSubject().isPermitted("printer:query:lp7200") {
    // Return the current jobs on printer lp7200
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值