不同角色用户查看到列表内容不一样应该怎么做?

目前在我做的系统中使用的权限系统是这样的:

用户---->角色----->权限
但是现在有一个问题,不同的角色能够查看的的数据列表内容是不一样的。举个例子吧。
假设有个2个角色,管理员、普通用户。他们都有查看文章的权限,但是管理员可以查看所有文章,普通用户只能查看自己发布的文章。那么我在查询文章的时候应该怎么判断更好呢?

目前我是写死角色 id 进行判断。但是我这知道这样不好。当新增加角色的时候还要更改代码。在这里我就是想问下大家应该怎么做可以不用写死判断。

附言 1  ·  4年前

看了下大家的回复,可能是我描述的还不太清楚。我重新描述一下:
目前我有3中角色,管理员、代理商、二级代理商。他们都有查看文章列表的权限,但是管理员可以查看全部文章,代理可以查看自己创建的文章和二级代理商创建的文章,二级代理商只能查看自己创建的文章。目前我的做法是,在文章列表方法中进行判断,根据角色返回对应的列表。但是这样做有个缺陷就是当增加新的角色,对应的判断还需要重新修改。想问下有没有什么办法可以不更改代码么?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 8

权限里面返回 用户的角色为管理员 或者用户的 user_id = 文章的 author_id

具体的查看 用户授权

4年前 评论

@laravel_denghy 我所理解的这个用户授权的作用是进行权限的验证,不管是 gates 还是策略都只是返回布尔值,仅仅是对操作进行验权。然而权限验证这一步我通过中间件和数据来实现的。不知道我理解的是否正确。或者你能否详细的说一下怎么做么?

4年前 评论
laravel_denghy 4年前
chenggx (作者) (楼主) 4年前

一般不用 ID,用更有描述性的字符串来替代。
因为角色是动态创建的,更倾向于通过控制权限来控制。
你可以认为有一个权限叫做查看所有文章,并且它的标识是index_article,你甚至可以用枚举定义它。
当你判断的时候就简单了

4年前 评论

搞一个权限叫做 view-all-article,,不就可以了吗,,,

只要有这个权限(包括有【包含这个权限的角色】)就可以看全部,不然就只能看自己的,,,

以后不管添加啥角色,只要给他这个权限,就可以看全部文章了,,,

4年前 评论

关系表建好,这个做起来就很简单

4年前 评论

@DaiChongWeb 能具体说一下怎么做么?

4年前 评论
daichongweb 4年前

用权限数 或者位运算 做权限 比如Linux 系统 777

4年前 评论

我觉得你还是用权限来控制就行了,你再增加权限就OK了,比如 查看个人文章,查看所有文章,查看个人及下级文章,这样的话,增加角色的话就不会有什么影响

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!