手机版

thinkphp自定义权限管理的名称判断方法

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

权限管理就是给不同的用户分配不同的权限。当用户登录或操作时,判断阻止用户在权限外操作。这一次,当用户登录时,将只显示启用了权限的内容。

首先,建立数据库。

1.权限表funcla。要存储和输入所有权限,还要避免因为权限名称被更改而导致权限无效的问题。

2.管理员表管理员。主要存储管理员用户名等信息。

3.管理员对应于权限表funadmin。主要存储打开的管理员id和权限id。

第二,输出权限列表。

1.通过管理员列表输入权限分配。

2.权限分配列表。

对于权限分配列表,由于权限段不同,我们需要区分顶级分类和它的子集。您还需要显示权限状态。权威地位的判断也使用了一层循环判断。代码中使用了三层嵌套循环输出。

具体代码如下

Div将权限分配给管理员{$username}/div表格宽度=' 100% '边框=' 0 '单元格填充=' 0 '单元格间距=' 0 '类=' list _ tablemt10' tr第个权限名称/第个状态/第/个tr volist名称='funcla' id='v '键='j' tr类=' tr ' TD { $ v . claname }/TD tdinput volist名称='funadmin' id='d'if条件=' $ d[' func layed ']eq $ v[{$vo.claname}/td td输入volist name='funadmin' id='d'if条件=' $ d[' func layed ']eq $ VO[' id ']'已选中/if/volist type=' checkbox ' id=' { $ VO . id } Name=' { $ userid } ' onchange=' return setfun(this,seturl)'//TD/tr/if/volist/volist/table。循环的示例图如下:

3.具体控制器如下:

公共函数setfun(){ $uid=I('get.id ',0,' int ');$ a=M(' admin ');$user=$a-where(数组(id=$uid))-field('username,id ')-find();$ this-username=$ user[' username '];$ this-userid=$ user[' id '];$ M=M(' func la ');$ func la=$ m-where(array(clapid=' 0 '))-field(true)-select();$ fun=$ m-field(true)-select();$ this-fun=$ fun;$ this-func la=$ func la;$ FD=M(' fun admin ');$ fun admin=$ FD-where(array(adminid=$ uid))-field(true)-select();$ this-fun admin=$ fun admin;$ this-display();}4、js .当用户权限发生变化时,触发js提交json,并将数据参数传输给控制器。

函数setfun(t,u){ var id=$(t)。attr(' id ');var uid=$(t)。attr(' name ');var类型=$(t)。是(' :checked ')?1:0;var URL=u;$ .ajax ({url:url,type:' post ',data: {id: id,type: type,uid : uid},success: function (data) {},error : function(data){ })} JSON传递的url如:

脚本类型=' text/JavaScript ' var seturl=' { : u(' Admin/chane fun ')} ';/脚本三。控制器获取json的数据参数,判断权限的增加和修改。在添加的情况下,将接受权限的id和要授权的权限的id作为一个数据添加到funadmin表中。修改就是删除一条符合条件的数据。同样的原因。

公共函数chane fun(){ $ M=M(' fun admin ');$其中[' func layed ']=I(' post . id ',0,' int ');$其中['adminid']=I('post.uid ',0,' int ');$type=I('post.type ',0,' int ');if(空($ type)){ $ oid=$ m-where($ where)-getfield(' id ');$ m-delete($ oid);返回;} $ m-data($ where)-add();}四。真正权威的判断。他们都做好了权限判断的准备,但现在才是真正的判断。基本原理是将待判断的权限名称与funadmin表中的当前登录用户id进行比较。如果找到了,说明用户有权限,即显示,或者隐藏。你看不到链接地址,但是如果你知道地址,你可以直接访问它。

(1)前台判断是否显示。调用了自定义方法Chackq();

If条件='chackQ('任务管理')' lia href=' { : u(' task info/dir ')} ' rel=' external no follow '任务管理/a/li/if(2)特定比较操作。

函数chackQ($name,$state=false){ if(!$ state){ exit;} $ fun=M(' func la ');$ func layed=$ fun-where(array(claname=$ name))-getfield(' id ');$ M=M(' fun admin ');$ adminid=会话(' admin _ userid ');$reset=$m-where(数组(funclaid=$ funclaid,adminid=$ adminid))-find();If(empty($reset)){ echo“您没有权限”;退出;}返回$ reset}至此,整个权限控制基本完成。

以上判断thinkphp自定义权限管理名称的方法是边肖分享的全部内容,希望能给大家一个参考和支持。

版权声明:thinkphp自定义权限管理的名称判断方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。