添加权限的问题?

以前做过权限是写死的,最近想了解一下可以添加权限的这个功能。
想问一下权限可以添加的问题。

  • 比如说,网站一开始的权限初始化好了,使用过程中,管理员添加了一个 编辑文章的 权限,这时候拥有这个权限才可以编辑文章,但是代码是一开始就写好的,开发者不可能想到管理员添加这个权限,那么这个新添加的权限有什么用呢?
  • 还是我理解错了,可以动态添加权限并不是这么一回事?望解疑。 谢谢。
阅读 2.6k
3 个回答
  1. 将需要/可能需要权限控制的路由存入数据库路由表中(路由需要指定name)
  2. 为用户/角色分配路由权限
  3. 添加路由权限验证中间件
    a. 检查路由是否存在于路由表中
    b. 存在则获取当前登录用户/角色是否有该路由权限(有则$next,无则响应无权限提示)
    c. 不存在直接$next($req)

当需要添加文章编辑权限时:

  1. 插入数据到路由表(post.edit)
  2. 为用户分配路由post.edit

https://github.com/Sydney710/...

你理解 错了。如果一开始代码里没判断 ,那添加权限 没半毛钱的用。

添加权限 ,判断权限 要一起才有用。

权限添加的方式有很多,直接写在业务代码里面的权限判断是最简单明了的一种,但是会给开发造成负担,维护起来也不方便,就比如遇到题主描述里面的问题,基本只能交给开发来改。

我比较常用的权限控制,是写一个中间件,或者控制器的构造函数里,使用某些固定的格式来直接进行权限管理。举个例子:
通常我们的控制器的命名是有规则的,xxxController
权限的格式是:控制器名 + 方法名
比如 文章相关的控制器: ArticleController 里面有个编辑的函数:edit

那么 编辑文章的权限名就是字符串: ‘articlecontroller@edit’

某个请求到来的时候,在中间件或者构造函数中,判断这个用户是否有相应的权限。如果没有,则中断函数,进行异常处理。如果有,则继续执行代码。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏