精华内容
下载资源
问答
  • TP5 RBAC权限控制

    千次阅读 2018-09-11 08:03:12
    *给组授权(给角色分配权限) *@param $id:组id */ public function privilege($id) { $group = AuthGroupModel::get($id);//根据组id获取组的相关信息 if(request()->...

    我自己的目录
    这里写图片描述

    这是权限所用到的表
    这里写图片描述
    其中base_auth_rule为权限表,bage_auth_group为分组表,为分组设置权限之后生成新表auth_group_rule
    这里写图片描述
    这里写图片描述
    这里写图片描述

     /**
        *给组授权(给角色分配权限)
        *@param $id:组id
        */
        public function privilege($id)
        {
    
            $group = AuthGroupModel::get($id);//根据组id获取组的相关信息
    
            if(request()->isGet()){
    
                $rules = AuthRuleModel::select();//获取所有的权限
    
                //读取相应的组权限
                $rulesCheck = AuthGroupRuleModel::where(['group_id'=>$id])->column('rule_id');
    
                return $this->fetch('privilege',[
    
                    'group' => $group->getData(),
    
                    'rules' => $rules,
    
                    'rulesCheck' => $rulesCheck,
    
                ]);
            }elseif(request()->isPost()){
    
                $rules = input('rules/a',[]);//获取相应的权限
            #修改权限
                $rulesCheck = AuthGroupRuleModel::where(['group_id'=>$id])->column('rule_id');//获取相应的组权限
    
                $deletes = array_diff($rulesCheck,$rules);//得到原来相应的组权限
    
                $inserts = array_diff($rules,$rulesCheck);//生成新的相对应的组权限
    
                AuthGroupRuleModel::where(['group_id'=>$id,'rule_id'=>['in',$deletes]])->delete();
    
                //删除原来相对应得权限
                $authrule = new AuthGroupRuleModel();//实例化角色权限表模型
    
                $row = [];//定义一个空的数组
    
                foreach($inserts as $rule_id){
    
                    $row[] = ['group_id'=>$id,'rule_id'=>$rule_id,];
                }
    
                $authrule->saveall($row);
    
                $this->redirect('index');
            }
    
        }
    
    

    在给组设置完权限之后,我们要对用户进行权限设置,首先我们要把用户分组,分组之后,我们对组所设置的权限就是用户的权限
    所用的到表位以下三个,其中bage_auth_admin为用户表,bage_auth_group组表,bage_auth_group_admin为设置权限之后的表
    此表位bage_auth_admin
    此表为组表
    这里写图片描述

    /**
        *对用户进行分组(权限分配)
        *
        *@param
        *
        */
        public function privilege($id)
        {
    
           $group = AdminModel::get($id);
    
           if(request()->isGet()){
    
                $rules = AuthGroupModel::select();
    
                $rulesCheck = AuthGroupAdminModel::where(['admin_id'=>$id])->column('group_id');
    
                return $this->fetch('privilege',[
    
                    'group' => $group->getData(),
    
                    'rules' => $rules,
    
                    'rulesCheck' => $rulesCheck,
                ]);
    
           }elseif(request()->isPost()){
    
                $rules = input('rules/a',[]);  //获取相应的权限
    
        /*---------------------修改分组-------------------------------------------*/
    
                $rulesCheck = AuthGroupAdminModel::where(['admin_id' => $id])->column('group_id');//获取相应的分组
    
                $deletes = array_diff($rulesCheck,$rules); //原来分组
    
                $inserts = array_diff($rules,$rulesCheck);  //新分组
    
                /*删除原来的分组*/
                AuthGroupAdminModel::where(['admin_id' => $id,'group_id' => ['in',$deletes]])->delete();
     
                $authrule = new AuthGroupAdminModel();//实例化用户角色表模型
    
                $row = [];
    
                foreach($inserts as $group_id){
    
                    $row[] = ['admin_id' => $id,'group_id' => $group_id];
    
                }
    
                $authrule -> saveall($row);
    
                $this->redirect('index');
           }
            
        }
    

    设置完成之后,我们可以查看用户所拥有的权限
    在查看用户权限时,我们需要进行连表查询,查询用户所拥有的权限,下图为试验sql
    试验sql
    执行这个sql之后,返回的结果:
    返回结果

    **此段代码是控制器中的方法,在控制其中调用extend目录中的auth类**
     //查看权限
        public function ShowAcc($id){
    
            $id = input('id');
    
            $auth = new Auth();
    
            $re = $auth->getUserRules($id);
    
            return $this->fetch('access',['re'=>$re]);
        }
    
    **此段代码是tp5框架中extend目录下的代码**
    <?php
    
    namespace auth;
    
    use think\Db;
    class Auth{
    
    	public function getUserRules($id)
    	{
    
    		//查看用户的权限
    		$data=Db::table('bage_auth_group_admin')
    
            ->alias('a')
    
            ->join('bage_auth_group_rule g','a.group_id = g.group_id')
    
            ->join('bage_auth_rule r','g.rule_id = r.id')
    
            ->where(['a.admin_id' => $id])
            
            ->select();
    
            return $data;
            
    	}
    	
    }
    

    此时我们可以看到权限
    这张图则是用户所拥有的权限

    展开全文
  • tp5权限管理Demo

    2019-04-11 22:47:51
    tp5权限管理Demo, 权限控制的比较细腻,包含每个控制器的增删改查,还对应博文的讲解
  • 往期精彩推荐:高逼格开源聊天系统 推荐 Spring+Netty+Websocket实现java人关注这个github开源项目,你会嫌弃手...炸街版Java开源OA系统,你值得学习大伙再搞权限系统的时候,权限控制到菜单很容易,但是很多情况要...

    71f29c41bdea3a6c1fda50ef5feddd42.png往期精彩推荐71f29c41bdea3a6c1fda50ef5feddd42.png

    高逼格开源聊天系统 推荐 Spring+Netty+Websocket实现

    java人关注这个github开源项目,你会嫌弃手上的笔试面试题资料

    2020年一线大厂java笔试面试题分享!锋哥挥泪整理!

    杠把子级别的Java开源后台管理系统

    这个Java分布式快速开发平台比较厉害!!!

    炸街版Java开源OA系统,你值得学习

    大伙再搞权限系统的时候,权限控制到菜单很容易,但是很多情况要控制到按钮接口级别,这个时候设计就要研究下了。方案好几种,锋哥这里推荐一个不错的开源方案,大伙可以参考学习下。Spring Boot-Shiro-Vue实现;

    43b9fcecaf172d2ceee9dbc95a34d5d8.png

    github开源地址:

    https://github.com/Heeexy/SpringBoot-Shiro-Vue

    系统演示地址:

    http://g.heeexy.com/

    Spring Boot-Shiro-Vue

    提供一套基于SpringBoot-shiro-vue的权限管理思路.

    前后端都加以控制,做到按钮/接口级别的权限

    DEMO

    测试地址

    admin/123456 管理员身份登录,可以新增用户,角色.

    角色可以分配权限

    控制菜单是否显示,新增/删除按钮是否显示

    设计思路

    核心

    每个登录用户拥有各自的N条权限,比如 文章:查看/编辑/发布/删除

    后端

    基于 RBAC新解 .

    通常我们的权限设计都是 用户--角色--权限 ,其中角色是我们写代码的人没法控制的,它可以有多条权限,每个用户又可以设计为拥有多个角色.因此如果从角色着手进行权限验证,系统都必须根据用户的配置动起来,非常复杂.

    所以我们后台设计的关键点就在于: 后台接口只验证权限,不看角色.

    角色的作用其实只是用来管理分配权限的,真正的验证只验证权限 ,而不去管你是否是那种角色.体现在代码上就是接口上注解为

    @RequiresPermissions("article:add")

    而不是

    @RequiresRoles(value = {"admin","manager","writer"}, logical = Logical.OR)

    前端

    采用了vueAdmin-template , ElementUI , 权限设计思路也是参考了 vueAdmin 的动态路由的设计.

    后端负责了接口的安全性,而前端之所以要做权限处理,最主要的目的就是隐藏掉不具有权限的菜单(路由)和按钮.

    登录系统后,后端返回此用户的权限信息,比如

     "userPermission":{"menuList":["role","user","article"
    ],"roleId":1,"nickname":"超级用户","roleName":"管理员","permissionList":["article:list","article:add","user:list",
    ],"userId":10003
    }

    根据menuList判断给此用户生成哪些路由, 根据permissionList判断给用户显示哪些按钮,能请求哪些接口.

    数据库

    最主要的是要有一张本系统内的全部权限明细表,比如下面这样 

    a9e6286c2c078b9adb5a537c9b2a72c4.png

    a9c66d55cf1299a93d51119ce399c29b.png

    如果某用户拥有表格中前五条权限,就可以查出他就拥有article和user两个菜单,至于页面内是否显示(新增)(修改)按钮,就根据他的permissionList来判断.

    具体实现

    有了思路,就可以根据各自的业务进行实现,本项目在此进行了简单的实现,后端代码在back文件夹,前端代码在vue文件夹.前端启动只需

    npm install --registry=https://registry.npm.taobao.org
    npm run dev

    后端就是常规的shiro配置,前端代码如果看不明白,可以参考前端权限代码说明

    分配权限页面效果

    5a93c924af36569999c377fd04f35988.png

    长按关注锋哥微信公众号,非常感谢;

    bcc08353b39cbcdad797ce6398adde59.png

                      加锋哥微信 拉你进微信群扯淡^_^:

    4ffc68b996c3ca3bb0d0b8c27339df96.png

    展开全文
  • 基于开发框架ThinkPHP5写的权限控制网站demo。规则表(think_auth_rule) 用户组表(think_auth_group) 用户组明显表(think_auth_group_access) 我们在规则表中定义权限规则, 在用户组表中定义每个用户组有哪些...
  • TP5权限功能的实现(含源码) 下面为大家讲解如何实现Auth权限功能(测试网址http://qx.wangzhuoe.cn/admin/login/login超级管理员:账号密码都是admin 管理员账号密码都是cs) 第一步将权限验证插件Auth.php放到控制器...

    TP5权限功能的实现(含源码)

    下面为大家讲解如何实现Auth权限功能(测试网址http://qx.wangzhuoe.cn/admin/login/login超级管理员:账号密码都是admin 管理员账号密码都是cs)

    第一步将权限验证插件Auth.php放到控制器文件下,插件和源码获取网址:https://www.kancloud.cn/zhuoe123/thinkphp5/1656454
    在这里插入图片描述
    第二步,需要新建4张数据库表 分别是用户账号表tp5_admin、规则表tp5_auth_rule 用户组表tp_auth_group 用户权限关系表tp5_auth_group_access,详情如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    第三步,在公共控制器中加入权限验证代码,即可,其他无非就是对规则表、用户组表、用户权限关系表进行增删改查
    在这里插入图片描述
    测试网址:http://qx.wangzhuoe.cn/admin/login/login
    超级管理员:账号密码都是admin
    管理员账号密码都是cs
    源码获取网址:https://www.kancloud.cn/zhuoe123/thinkphp5/1656454

    展开全文
  • QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技aming 网络安全 ,深度学习,嵌入式,机器强化,生物...

    在这里插入图片描述


    QQ 1274510382
    Wechat JNZ_aming
    商业联盟 QQ群538250800
    技术搞事 QQ群599020441
    解决方案 QQ群152889761
    加入我们 QQ群649347320
    共享学习 QQ群674240731
    纪年科技aming
    网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。

    叮叮叮:产品已上线 —>关注 官方认证-微信公众号——济南纪年信息科技有限公司
    民生项目:商城加盟/娱乐交友/创业商圈/外包兼职开发-项目发布/
    安全项目:态势感知防御系统/内网巡查系统
    云服项目:动态扩容云主机/域名/弹性存储-数据库-云盘/API-AIeverthing
    产品咨询/服务售后(同)

    纸上得来终觉浅,绝知此事要躬行 !!!
    寻找志同道合伙伴创业中。。。抱团滴滴aming联系方式!!


    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技aming 网络安全 ,深度学习,嵌入式,机器强化,生物...
  • tp5 auth权限设置

    2018-05-23 15:02:00
    案例:把所需要的auth类放在一个公共的地方引用,我这里就只是放在了与application同级的extend里面的org所以我在公共控制器里面实例为use \org\Auth; 然后我再公共控制器里面写 class Common extends Base{//任何...
  • <?php /** * Created by PhpStorm. * User: jianyivip * Date: 2019-07-26 * Time: 16:10 */ namespace app\index\controller; use think\facade\Env;...//获取模块下所有的控制器和方法写入到权限表 ...
  • 根据tp5.0,进行拓展,带权限控制,登录,角色管理,管理员管理,菜单管理,token验证,参数过滤与校验,带sql脚本的纯api Demo
  • tp5 Auth权限认证方法与步骤

    千次阅读 2018-11-06 17:58:29
    RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了,比如页面上面的操作按钮, 我想判断用户权限来显示这个按钮, 如果没有权限就不会显示这个按钮; 再比如我想按积分进行权限认证, 积分在0-100时...
  • ThinkPHP5权限控制

    2017-11-30 17:19:00
    我在用ThinkPHP5做开发的时候发现,它没有权限类,自己写太麻烦,于是就想到了把TP3里面的权限类拿来修改使用,结果这种方法是可行的,下面记录附上修改后的Auth.php权限类 1 <?php 2 // +---------------------...
  • 最近已经在着手写LayTp2.0版本。...它们分别是:后台控制器基类,后台登录控制器,后台首页控制器,权限检测中间件后台登录控制器和后台首页控制器都集成了后台控制器基类在基类控制器中,定义了一个属性,/...
  • 一:日志需求,需要一个表记录所有的 模块名/控制器命/方法...//获取模块下所有的控制器和方法写入到权限表 public function initperm() { $modules = array('admin'); //模块名称 $i = 0; foreach ($modules as...
  • 了解来这么久权限控制权限的知识,却不知道如何写代码,网上的代码多数并没有多少完整的源码能提供参考。偶然看到官网的例子,现在终于也把源码的实现也弄得明白了一点。tp5框架的Auth类可以实现页面的访问权限,还...
  • 方法级别的权限控制(API级别)Lin的定位在于实现一整套 CMS的解决方案,它是一个设计方案,提供了不同的后端,不同的前端,而且也支持不同的数据库目前官方团队维护 lin-cms-vue,lin-cms-spring-boot,lin-cms-koa,lin...
  • 这是一个新鲜出炉的基于tp5+bootstrap+mysql档案管理系统,里面包括权限控制、文章发布、用户的增删改查、员工档案的三级审核。如果有类似需要的尽管拿去,没有版权-,-
  • TP5 RBAC简单的介绍 ** RBAC基于角色的权限访问控制 一、介绍 1.1什么是权限管理? 权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的...
  • TP5CMS,一个基于ThinkPHP5.1版本开发内容管理系统,精细化自适应后台系统 主要功能: 数据缓存 权限控制 自定义模型 内容管理 广告管理 会员管理(未完成) 站点设置 日志记录 数据库管理 管理员分组 使用须知 运行...
  • 权限模型介绍3.RBAC架构4.RBAC模块功能5.实战案例5.1数据库设计5.2框架配置(略),使用tp55.3bootstrap界面布局搭建 1.权限的作用 使用者角度 权力 和 限制 正确的行使权力 在限制范围内使用权力 设计者角度 安全:...
  • Dawn-Api[Toc]说明thinkphp5编写的restful风格的API,集API请求处理,权限认证,自动生成文档等功能;restful风格处理请求每个接口对于一个控制器,method...安装如果想在你的TP5项目中使用,那么可以直接使用comp...
  • PHP-Casbin 是一个强大的、高效的开源访问控制框架,它支持基于各种访问控制模型的权限管理。 Think-Casbin 是一个专为ThinkPHP5.1定制的Casbin的扩展包,...composer create-project topthink/think=5.1.* tp5 在...
  • TP5提示模板不存在

    千次阅读 2018-12-03 23:48:22
    window下开发的程序上传到linux服务器下经常遇到这个问题 解决方法:$this-&gt;fetch('控制器名/模板...跟文件的权限有关系,特别是自动生成的文件或者目录类的权限,linux服务器出于安全因素对于用户的权限有...
  • tp5 mkdir(): Permission denied

    千次阅读 2018-08-15 10:49:53
    因为这跟文件的权限有关系,特别是自动生成的文件或者目录类的权限,linux服务器出于安全因素对于用户的权限有着严格的控制。 对于tp框架而言,自动生成的文件或者目录应该是runtime目录,所以在线部署代码的时候,...
  • tp5-auth这是一个基于ThinkPHP5框架的Auth类库案例展示基于ThinkPHP5开发呈现权限管理的效果安装composer require zhujinkui/tp5-auth说明AUTH(基于用户角色的访问控制),就是用户通过角色与权限进行关联。...
  • 方法级别的权限控制(API级别)Lin的定位在于实现一整套 CMS的解决方案,它是一个设计方案,提供了不同的后端,不同的前端,而且也支持不同的数据库目前官方团队维护 lin-cms-vue,lin-cms-spring-boot,lin-cms-koa,lin...
  • 在部署在线上的时候,你使用tp5的时候,这个错误很大几率会碰到。 因为这跟文件的权限有关系,特别是自动生成的文件或者目录类的权限,linux服务器出于安全因素对于用户的权限有着严格的控制。 对于tp框架而...
  • 微信小程序+TP5——token令牌生成

    千次阅读 2018-10-24 17:06:24
    并返回到客户端,而服务器端会默认将token令牌值作为key, 用户信息作为value,一一对应存入缓存中,当用户每一次发送请求时,都要携带这个token令牌值,来判断是否有权限访问接口,并判断登录状态。 实现思路: ...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

tp5权限控制