基于url的权限控制

  首先需要权限表,在权限表里有一个tag字段,这里面添的是url地址,基于url的控制权限都是控制器/方法这种类型的,所以可以理解某个控制器就是一个权限功能,

比如给某个用户某个权限的话,直接将权限表的某个权限id和用户id关联即可,判断用户有没有某个权限,需要循环比对一下,

比如某个控制器权限tag为user,那指的是以user控制器下的所有方法都将有权限去访问,

例:直接访问localhost/app/user/index,那我只需要取得当前访问路径user/index,再取出当前用户所有权限,判断下当前路径是否包含已有的权限tag,

如果有,那表示有权限访问。

  可以使用$row=strpos('当前路径','已有权限tag');

  然后需要判断$row===0,如果等于0才能表示是从第一位开始匹配的。(tag越短权限越大,如果从第一位开始匹配,当前路径完全包含了用户tag,那么表示一定具有此权限)。

  后台首页 左侧的功能列表,是需要从库里取出所有tag 遍历出来的列表,点击列表某功能后,那么就需要判断某功能的uri是否存在于当前用户的auth里。

如果某个用户在后台没有某些权限,那么理论上我们是不应该让他看到除此以外的功能列表的,这就需要在进入后台时,遍历出左侧列表时,率先去判断用户相匹配的权限列表,不存在的权限移出auth_list数组,再遍历到后台左例。

原文地址:https://www.cnblogs.com/houweijian/p/3080416.html