当前位置: 首页 > Linux

如何在不使用第三方包的情况下,在社交系统ThinkSNS中建立优雅的用户权限管理【研发日记13】

时间:2023-04-06 19:14:15 Linux

本文主要讲解如何在不使用第三方包的情况下,基于Laravel框架开发一个社交系统时ThinkSNS+,恢复一套优雅且高性价比的用户权限管理系统功能,【包含ThinkSNS真实代码】。需求场景为用户组+权限节点。Laravel有很多很好的第三方包来满足这个需求。下面的描述代码不参与缓存机制纯数据库查询,给大家提供一个思路。以下代码均来自ThinkSNS+,ThinkSNS+是基于Laravel新开发的ThinkSNS社交开源项目,遵循Apache-2.0开源协议。欢迎星。其实数据表的设计我个人参考了Zizaco/entrust,因为我觉得在大多数情况下,我们要使用的角色和权限节点真的是多用户的。数据表设计如下:可以看到关系是:用户->角色->能力,所有的关系都是多对多的关系。一个用户可以有多个角色,一个能力可以分配给多个角色。链式方法设计,调用$user->ability()->all()和$user->ability()->all()都是返回集合,集合下的所有方法都可以链式进行进一步操作。abilityUserTraitAbility实例角色模型需要代码使用然后我们打开User模型wenjia文件,添加如下代码:在用户模型中。但是能够胜任用户组权限的判断逻辑就足够了。整个能力就是集合上的一些封装组合,让代码调用更优雅。以上代码是开发ThinkSNS+的真实代码。具体实现可以参考项目。以上代码均来自ThinkSNSPlus。想看完整的开发代码可以看仓库:GitHub:https://github.com/slimkit/th...(开源不易,求Star)ThinkSNS官网:http://www.thinksns.com/