不使用三方包时,如何在社交系统ThinkSNS中建立优雅的用户权限管理【研发日记13】
2017-08-30 00:00
711 查看
摘要: 本文主要全面讲解在不适用第三方包的情况下,如何在基于Laravel框架上,研发社交系统ThinkSNS+时,简历一套优雅而不失性价比的用户权限管理体系功能,【内含ThinkSNS真实代码】
什么是ThinkSNS ?
ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+)。
社交系统ThinkSNS团队拥有超过九年的移动互联网软件/网站/APP开发经验,涉及行业:粉丝社群、直播互动、移动医疗、电子商务、生活服务、在线教育、旅游出行、移动办公、电子杂志、休闲娱乐、企业信息等。
我们的服务包括
快速建站、提供技术及产品解决方案、技术支持维护、技术孵化服务,同时,我们也提供TS的二次开发服务以及网站开发、Android APP开发、iOS APP开发、H5开发、微信公众号开发、小程序开发等定制开发服务,更多TS问题请咨询QQ:3298713109。
需求场景
就是用户组+权限节点,这个需求 laravel 有很多很好的第三方包实现。下面描述代码不参与缓存机制纯数据库查询,给大家提供一个思路。
下面的代码都是来自于ThinkSNS+,是基于 Laravel 全新开发的 ThinkSNS 社交开源项目,遵循 Apache-2.0 开源协议。欢迎 Star 哦。
数据表设计
其实这一块我个人是参考的 Zizaco/entrust 因为我觉得,大多数情况下,我们要用的角色和权限节点都是真多用户的。数据表设计如下:
可以看到关系如下 user -> role -> ability ,其中关系全部都是多对多关系。一个用户可以拥有多个 role,一个 ability 可以被分配给多个 role 。
链式方法设计
其中调用 $user->ability()->all() 和 $user->ability()->all() 都是返回的 集合 可以链式调用集合下的所有方法进一步操作。
ability 用户 Trait
Ability 实例
Role 模型所需代码
使用
然后我们打开 User 模型wen jia文件添加如下代码:
class User ...
{
use UserHasAbility;
}
总结
其实性状在 User 模型中只暴露了 roles 和 ability 两个公开方法。但是已经足以胜任用户组权限判断逻辑了。
整个 ability 都是结合在集合之上的一些封装,这样是的代码调用更加优雅。
以上代码是在开发ThinkSNS+中的实际真实代码。具体的实现可参考项目。
以上代码都来自于ThinkSNS Plus,看完整的开发代码可以看仓库:
GitHub: https://github.com/slimkit/thinksns-plus(开源不易,求 Star )
源码授权购买
现行稳定系统V4系列全端产品(PC/H5/APP),授权源码购买、产品体验,请致电:18108035545开源版源码官方正版获取唯一渠道:关注公众号“thinksns”,回复“开源版”即可获得最新源码压缩文件地址。
授权购买、二次开发、技术孵化、定制开发、产品功能规划、技术支持、商务合作等:
咨询电话:18108035545;028-82884828
市场合作邮箱:lihecong@zhishisoft.com
商务合作QQ:3298713109
什么是ThinkSNS ?
ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+)。
社交系统ThinkSNS团队拥有超过九年的移动互联网软件/网站/APP开发经验,涉及行业:粉丝社群、直播互动、移动医疗、电子商务、生活服务、在线教育、旅游出行、移动办公、电子杂志、休闲娱乐、企业信息等。
我们的服务包括
快速建站、提供技术及产品解决方案、技术支持维护、技术孵化服务,同时,我们也提供TS的二次开发服务以及网站开发、Android APP开发、iOS APP开发、H5开发、微信公众号开发、小程序开发等定制开发服务,更多TS问题请咨询QQ:3298713109。
需求场景
就是用户组+权限节点,这个需求 laravel 有很多很好的第三方包实现。下面描述代码不参与缓存机制纯数据库查询,给大家提供一个思路。
下面的代码都是来自于ThinkSNS+,是基于 Laravel 全新开发的 ThinkSNS 社交开源项目,遵循 Apache-2.0 开源协议。欢迎 Star 哦。
数据表设计
其实这一块我个人是参考的 Zizaco/entrust 因为我觉得,大多数情况下,我们要用的角色和权限节点都是真多用户的。数据表设计如下:
可以看到关系如下 user -> role -> ability ,其中关系全部都是多对多关系。一个用户可以拥有多个 role,一个 ability 可以被分配给多个 role 。
链式方法设计
其中调用 $user->ability()->all() 和 $user->ability()->all() 都是返回的 集合 可以链式调用集合下的所有方法进一步操作。
ability 用户 Trait
Ability 实例
Role 模型所需代码
使用
然后我们打开 User 模型wen jia文件添加如下代码:
class User ...
{
use UserHasAbility;
}
总结
其实性状在 User 模型中只暴露了 roles 和 ability 两个公开方法。但是已经足以胜任用户组权限判断逻辑了。
整个 ability 都是结合在集合之上的一些封装,这样是的代码调用更加优雅。
以上代码是在开发ThinkSNS+中的实际真实代码。具体的实现可参考项目。
以上代码都来自于ThinkSNS Plus,看完整的开发代码可以看仓库:
GitHub: https://github.com/slimkit/thinksns-plus(开源不易,求 Star )
源码授权购买
现行稳定系统V4系列全端产品(PC/H5/APP),授权源码购买、产品体验,请致电:18108035545开源版源码官方正版获取唯一渠道:关注公众号“thinksns”,回复“开源版”即可获得最新源码压缩文件地址。
授权购买、二次开发、技术孵化、定制开发、产品功能规划、技术支持、商务合作等:
咨询电话:18108035545;028-82884828
市场合作邮箱:lihecong@zhishisoft.com
商务合作QQ:3298713109
相关文章推荐
- 不使用三方包时,如何在社交系统ThinkSNS中建立优雅的用户权限管理【研发日记13】
- 如何在 Laravel 中 “规范” 的开发验证码发送功能【社交系统ThinkSNS研发日记十一】
- 社交系统ThinkSNS+研发日记四:如何做到 Laravel 配置可以网站后台配置
- 企业如何管理在线ERP系统用户权限
- 用户和角色:通用权限管理系统数据库表结构如何设计?
- 社交系统ThinkSNS+在研发过程中,如何做到 Laravel 配置可以网站后台配置
- 如何使用AngularJs打造权限管理系统【简易型】
- 社交系统ThinkSNS+软件系统研发日记 2月(上)
- 【社交系统研发日记】如何在 Laravel 中 “规范” 的开发验证码发送功能 !
- 权限管理系统如何分别实现对用户和角色的授权
- How to use the windows active directory to authenticate user via logon form 如何自定义权限系统,使用 active directory验证用户登录
- 知识管理系统Data Solution研发日记之十四 如何以编程方式处理PDF格式文档
- Ruby on Rails: 使用devise+cancan+rolify建立完整的权限管理系统
- Django权限系统auth模块详解 转自:原文出处 auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理。 auth可以和admin模块配合使用, 快速建
- 【社交系统ThinkSNS+研发日记】Laravel Model 利用 Macroable 为数据模型添加宏能
- 社交系统ThinkSNS+ alpha.2 版本发布,快来看看都有些什么【研发日记六】
- Ruby on Rails: 使用devise+cancan+rolify建立完整的权限管理系统
- 权限管理系统如何分别实现对用户和角色的授权
- 用户和角色:通用权限管理系统数据库表结构如何设计?
- ThinkSNS+如何计算字符显示长度?【社交系统研发日记五】