ThinkSNS的ITPUB博客

暂无签名

  • 博客访问: 10066
  • 博文数量: 45
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-30 16:41
  • 认证徽章:
ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类
文章存档

2017年(45)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题

分类: 开源技术

本文主要全面讲解在不适用第三方包的情况下,如何在基于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 因为我觉得,大多数情况下,我们要用的角色和权限节点都是真多用户的。数据表设计如下:

h7SGVm84q9.png

可以看到关系如下 user -> role -> ability ,其中关系全部都是多对多关系。一个用户可以拥有多个 role,一个 ability 可以被分配给多个 role 。

链式方法设计


其中调用 $user->ability()->all() 和 $user->ability()->all() 都是返回的 集合 可以链式调用集合下的所有方法进一步操作。

ability 用户 Trait



Ability 实例


使用

然后我们打开 User 模型wen jia文件添加如下代码:

class User ...
{
    use UserHasAbility;
} 

总结

其实性状在 User 模型中只暴露了 roles 和 ability 两个公开方法。但是已经足以胜任用户组权限判断逻辑了。

整个 ability 都是结合在集合之上的一些封装,这样是的代码调用更加优雅。

以上代码是在开发ThinkSNS+中的实际真实代码。具体的实现可参考项目。

以上代码都来自于ThinkSNS Plus,看完整的开发代码可以看仓库:

GitHub: https://github.com/slimkit/thinksns-plus(开源不易,求 Star )

ThinkSNS官网:http://www.thinksns.com/
阅读(4344) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~

张凯明1232017-10-25 00:17:29

dsfdffdklfj.ccedip.com
fdsfgfgfgfdg.ccedip.com
jfghidfdshfn.ccedip.com
fsfdsgfgfdhg.ccedip.com
13538017209.54086.com
fdg546456gfh4gfh.b2b.chinamining.com
sfhfhdoew89798.b2b.chinamining.com
fdg546456gfh4gfh.zixin.com.cn
fsfdsgfgfdhg.zixin.com.cn
dsfdffdklfjdsfk.zixin.com.cn
xgdkjkjfd.zixin.com.cn
gdsfhjf65465.51baohumo.com 
dkfhgjkfdgf465424.51baohumo.com
fdgdf9879dfh.51baohumo.com
ghkkgjsg.51baohumo.com
hfsfhusdfew665645.51baohumo.com
Shop.ebdoor.com/shops/3854728/
Shop.ebdoor.com/shops/3851063/

评论热议
请登录后评论。

登录 注册