Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)

下面由thinkphp框架教程欄目給大家介紹thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn),希望對(duì)需要的朋友有所幫助!

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)

1.將auth類(lèi)下載好 放置目錄: extendauthauth.php

2.將類(lèi)中的sql語(yǔ)句執(zhí)行,可以在數(shù)據(jù)庫(kù)中創(chuàng)建3張表?auth_group(用戶(hù)組表)? ? ? ? ? ?auth_rule(權(quán)限規(guī)則表)? ? ? ? ? ?auth_group_access(用戶(hù)與用戶(hù)組關(guān)聯(lián)表)

3.我想給規(guī)則 添加一個(gè)級(jí)別關(guān)系(類(lèi)似于無(wú)限極分類(lèi))? ?auth_rule(權(quán)限規(guī)則表) 中添加3個(gè)字段? pid(父級(jí)id ,0為頂級(jí)權(quán)限)? ?level(級(jí)別)? ? sort(排序),如下圖

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

4,首先 自己創(chuàng)建管理員表,比如叫admin表,增刪改查 自己去正常設(shè)計(jì),group字段為所屬用戶(hù)組

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)

5.auth_group用戶(hù)組的?增刪改查 也自己去制作一下,id,用戶(hù)組名稱(chēng),狀態(tài)(開(kāi)啟,或者關(guān)閉),規(guī)則(所對(duì)應(yīng)的是規(guī)則表的id)

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)

6.auth_rule規(guī)則表 增刪改查 也自己去制作一下,id,name(控制器/方法),title(規(guī)則名稱(chēng) )? status狀態(tài)(開(kāi)啟,或者關(guān)閉),

?Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)

7. 在添加用戶(hù)的時(shí)候 給用戶(hù)選擇 所屬用戶(hù)組, uid(對(duì)應(yīng)的是用戶(hù)id)? ?group_id(對(duì)應(yīng)的是用戶(hù)所屬用戶(hù)組的id),這樣就關(guān)聯(lián)起來(lái)了

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)

?

8.把會(huì)員登陸功能做好,登陸成功設(shè)置Session(‘id’),將當(dāng)前登陸會(huì)員ID存在session中

9.最關(guān)鍵的的一步,就是使用auth類(lèi)進(jìn)行驗(yàn)證,在common.php這個(gè)公共頁(yè)面中 使用

<?php namespace appadmincontroller; use thinkController; use thinkRequest; use authAuth; //引入suth類(lèi) class Common extends Controller {     public function _initialize(){       //初始化判斷用戶(hù)是否已經(jīng)登陸       if(!session(&#39;uname&#39;)){           $this->error('請(qǐng)先登陸系統(tǒng)!','login/index'); ????????}   ????????//獲得當(dāng)前頁(yè)面的控制器?/?方法 ???????$request=Request::instance(); ???????$moudle=$request-&gt;module();?//獲取當(dāng)前控制器名稱(chēng) ???????$con=$request-&gt;controller();?//獲取當(dāng)前控制器名稱(chēng) ???????$action=$request-&gt;action();??//獲取當(dāng)前方法名稱(chēng) ???????$this-&gt;assign(array( ???????????????'con'=&gt;$con, ???????????????'action'=&gt;$action, ???????));  ???????$rules=$con.'/'.$action;??//組合??控制器/方法 ???????$auth=new?Auth();?//實(shí)例化auth類(lèi) ???????$notCheck=array('Index/index');??//都可以訪(fǎng)問(wèn)的頁(yè)面 ???????if(session('uid')!=1){??//不是超級(jí)管理員才進(jìn)行權(quán)限判斷 ??????????if(!in_array($rules,$notCheck)){??//?是否在開(kāi)放權(quán)限里面 ??????????????if(!$auth-&gt;check($rules,session('uid'))){???//?第一個(gè)參數(shù)??控制/方法???第二個(gè)參數(shù):當(dāng)前登陸會(huì)員的id ?????????????????$this-&gt;error('沒(méi)有權(quán)限','index/index'); ???????????????}; ???????????} ????????}     ???????}

最終展示;

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)

?

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享