关于权限控制的讨论

来源:互联网 发布:东芝181usb端口驱动 编辑:程序博客网 时间:2024/05/17 05:53

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

http://mydomain.com/channelAAA/edit.do?id=0000http://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
原创粉丝点击