第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

ThinkPHP之比RBAC更好用的權(quán)限管理 auth認(rèn)證

標(biāo)簽:
ThinkPHP

一 数据库添加三张auth相关表,表结构在Think->Auth.class.php 里面

其中表字段含义为

/**

* 权限认证类

* 功能特性:

* 1,是对规则进行认证,不是对节点进行认证。用户可以把节点当作规则名称实现对节点进行认证。

* $auth=new Auth(); $auth->check('规则名称','用户id')

* 2,可以同时对多条规则进行认证,并设置多条规则的关系(or或者and)

* $auth=new Auth(); $auth->check('规则1,规则2','用户id','and')

* 第三个参数为and时表示,用户需要同时具有规则1和规则2的权限。 当第三个参数为or时,表示用户值需要具备其中一个条件即可。默认为or

* 3,一个用户可以属于多个用户组(think_auth_group_access表 定义了用户所属用户组)。我们需要设置每个用户组拥有哪些规则(think_auth_group 定义了用户组权限)

*

* 4,支持规则表达式。

* 在think_auth_rule 表中定义一条规则时,如果type为1, condition字段就可以定义规则表达式。 如定义{score}>5 and {score}<100 表示用户的分数在5-100之间时这条规则才会通过。

*/

//数据库

/*

-- ----------------------------

-- think_auth_rule,规则表,

-- id:主键,name:规则唯一标识, title:规则中文名称 status 状态:为1正常,为0禁用,condition:规则表达式,为空表示存在就验证,不为空表示按照条件验证

-- ----------------------------

DROP TABLE IF EXISTS `think_auth_rule`;

CREATE TABLE `think_auth_rule` (

`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

`name` char(80) NOT NULL DEFAULT '',

`title` char(20) NOT NULL DEFAULT '',

`type` tinyint(1) NOT NULL DEFAULT '1',

`status` tinyint(1) NOT NULL DEFAULT '1',

`condition` char(100) NOT NULL DEFAULT '', # 规则附件条件,满足附加条件的规则,才认为是有效的规则PRIMARY KEY (`id`),

UNIQUE KEY `name` (`name`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- ----------------------------

-- think_auth_group 用户组表,

-- id:主键, title:用户组中文名称, rules:用户组拥有的规则id, 多个规则","隔开,status 状态:为1正常,为0禁用

-- ----------------------------

DROP TABLE IF EXISTS `think_auth_group`;

CREATE TABLE `think_auth_group` (

`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

`title` char(100) NOT NULL DEFAULT '',

`status` tinyint(1) NOT NULL DEFAULT '1',

`rules` char(80) NOT NULL DEFAULT '',

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- ----------------------------

-- think_auth_group_access 用户组明细表

-- uid:用户id,group_id:用户组id

-- ----------------------------

DROP TABLE IF EXISTS `think_auth_group_access`;

CREATE TABLE `think_auth_group_access` (

`uid` mediumint(8) unsigned NOT NULL,

`group_id` mediumint(8) unsigned NOT NULL,

UNIQUE KEY `uid_group_id` (`uid`,`group_id`),

KEY `uid` (`uid`),

KEY `group_id` (`group_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

*/

各字段含义如上,一看就知道含义的哈。

二 、在后台的公共控制器中 做如下设置,具体的权限提示可以自定义

<?phpnamespace SadminController;use ThinkController;class CommonController extends Controller {public function _initialize(){if(is_login() == 0) redirect(U('./Sadmin/Index/'));

$Auth = new ThinkAuth();if(!$Auth->check('Sadmin/'.CONTROLLER_NAME.'/'.ACTION_NAME,session('id'))){$this->error('没有权限');

}

}

}

这步的作用是防止没有权限的管理员非法调用控制器和方法

三、为了在前台模板好调用方法 ,在公共方法function.php中添加如下方法。

function check_auth($rule,$uid,$relation='or',$true,$false="没有权限"){

$auth = new ThinkAuth();return $auth->check($rule,$uid)?$true:$false;

}

四 在需要隐藏的部分,改为如下的样式

这样

<if condition="authCheck('Auth/index',$_SESSION['id'])"><li class="nav-header hidden-tablet"><i class="icon-user"></i> Auth权限认证 </li><li><a class="ajax-link" href="{:U('Auth/index')}"><span class="hidden-tablet">   <i class="icon-th"></i> Auth认证 </span></a></li></if>

或者是这样

{:check_auth('Sadmin/City/add_county',$_SESSION['id'],'or','<div class="add"><a href="javascript:add_county();" class="btn btn-success modify" style="outline: 0 none;">添加</a></div>','')}

在说一句。auth_rule表里面,当type字段为1时,condition字段里面的内容将会用作正则表达式的规则来配合认证规则来认证用户

ok,就是这样的。:)



作者:回眸淡然笑
链接:https://www.jianshu.com/p/caea8b3ba300

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消