日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

Thinkphp中Auth认证

發(fā)布時(shí)間:2024/9/30 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Thinkphp中Auth认证 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

權(quán)限管理在thinkphp有兩種方式,比較常見(jiàn)用是RBAC,也是比較人用,容易理解,是基于節(jié)點(diǎn)的權(quán)限管理,Auth也可以做權(quán)限管理基于規(guī)則的權(quán)限管理,下面分別說(shuō)說(shuō)

1,Thinkphp RBAC權(quán)限管理,5張表就可以輕松搞點(diǎn)權(quán)限管理

用戶(hù)表 think_username

id name password

用戶(hù)組表(也被稱(chēng)為角色表) think_group

gid gname

用戶(hù)和角色之間關(guān)系表 think_group_user

id uid gid

權(quán)限表(也被稱(chēng)為訪問(wèn)權(quán)限表,控制器,方法之間的表,也被稱(chēng)為節(jié)點(diǎn)表)think_role

id jname

角色和權(quán)限之間的表 think_role_group

id gid jid

#代碼找不到了,具體可參考幕課網(wǎng)RBAC視頻教程

2,Thinkphp Auth權(quán)限管理基于規(guī)則的

Auth權(quán)限認(rèn)證是按規(guī)則進(jìn)行認(rèn)證。 在數(shù)據(jù)庫(kù)中我們有

規(guī)則表(think_auth_rule)
用戶(hù)組表(think_auth_group)
用戶(hù)組明顯表(think_auth_group_access)
我們?cè)谝?guī)則表中定義權(quán)限規(guī)則, 在用戶(hù)組表中定義每個(gè)用戶(hù)組有哪些權(quán)限規(guī)則,在用戶(hù)組明顯表中定義用戶(hù)所屬的用戶(hù)組。

<?php namespace Home\Controller;use Think\Auth; use Think\Controller; use Think\Page;class AuthController extends CommonController {/*** 規(guī)則列表*/public function index(){$rules = M('AuthRule')->select();$count = count($rules);$page = new Page($count,10);// 實(shí)例化分頁(yè)類(lèi) 傳入總記錄數(shù)和每頁(yè)顯示的記錄數(shù)(10)$show = $page->show();// 分頁(yè)顯示輸出$menu1 = M('AuthRule')->where(array('pid'=>0))->select();$rules = M('AuthRule')->limit($page->firstRow.','.$page->listRows)->select();$this->assign('page',$show);$this->assign("count",$count);$this->assign("rules",$rules);$this->assign("menurules",$menu1);$this->display();}/*** 查找規(guī)則*/public function findrule(){$cond = array('id'=>$_POST['id']);$rule = M('AuthRule')->where($cond)->find();$this->ajaxReturn($rule,'json');}/*** 添加規(guī)則*/public function add(){$rules = M('AuthRule')->where(array('pid'=>0))->select();if ($_POST){$name = $_POST['name'];$title = $_POST['title'];$type = $_POST['type'];$status = $_POST['status']?$_POST['status']:0;$condition = $_POST['condition'];$pid = $_POST['pid'];$ismenu = $_POST['ismenu'];$sort_order = $_POST['sort_order'];$data = compact('name','title','type','status','condition','pid','ismenu','sort_order');M('AuthRule')->add($data);alert('添加成功','/home/auth/index');}$this->assign("rules",$rules);$this->display();}/*** 修改規(guī)則*/public function editrule(){if ($_POST['id']){$data = array('name'=>$_POST['name'],'title'=>$_POST['title'],'status'=>$_POST['status']?$_POST['status']:0,'condition'=>$_POST['condition']?$_POST['condition']:0,'pid'=>$_POST['pid'],'ismenu'=>$_POST['ismenu'],'sort_order'=>$_POST['sort_order']);M('AuthRule')->where(array('id'=>$_POST['id']))->save($data);}$re = array('code'=>1,'message'=>'success');$this->ajaxReturn($re,'json');}/*** 刪除規(guī)則*/public function delrule(){$id = $_GET['id'];if ($id){M('AuthRule')->where(array('id'=>$id))->delete();alert("刪除成功!",'/home/auth/index');}else{alert("刪除失敗",'/home/auth/index');}}/*** 規(guī)則組*/public function authGroup(){$groupRules = M('AuthGroup')->select();$count = count($groupRules);$this->assign("count",$count);$this->assign('groupRules',$groupRules);$this->display();}/*** 添加規(guī)則組*/public function addAuthGroup(){$rules = M('AuthRule')->select();$auth = new Auth();$rules = $auth->unlimitedForLayer($rules);if ($_POST){$postrules = $_POST['rules'];$cond['id'] = array('in',$postrules);$crules = M('AuthRule')->where($cond)->select();$auth = new Auth();$data = $auth->childForLayer($crules);$saverules = implode(",",array_column($data,'id'));$data = array('title'=>$_POST['title'],'status'=>$_POST['status'],'rules'=>$saverules);M('AuthGroup')->add($data);alert("添加成功",'/home/auth/authGroup');}$this->assign('rules',$rules);$this->display();}/*** 修改規(guī)則組頁(yè)面*/public function editAuthGroup(){$id = $_GET['id'];$group = M('AuthGroup')->where(array('id'=>$id))->find();$grouprules = explode(',', trim($group['rules'], ','));$rules = M('AuthRule')->select();/**************************************************/$auth = new Auth();$rules = $auth->unlimitedForLayer($rules); // print_r($rules);die();/**************************************************/$this->assign('rules',$rules);$this->assign('grouprules',$grouprules);$this->assign('group',$group);$this->display();}/*** 修改規(guī)則組邏輯*/public function updateAuthGroup(){$postrules = $_POST['rules'];$cond['id'] = array('in',$postrules);$rules = M('AuthRule')->where($cond)->select();$auth = new Auth();$data = $auth->childForLayer($rules);$rules = implode(",",array_column($data,'id'));$data = array('title'=>$_POST['title'],'status'=>$_POST['status']?$_POST['status']:0,'rules'=>$rules);M('AuthGroup')->where(array('id'=>$_POST['id']))->save($data);alert("添加成功",'/home/auth/authGroup');}/*** 刪除規(guī)則組*/public function delGroup(){$id = $_GET['id'];$re = M('AuthGroup')->where(array('id'=>$id))->delete();if ($re){alert('刪除成功','/home/auth/authGroup');}else{alert('刪除失敗','/home/auth/authGroup');}}/*** 用戶(hù)組*/public function userGroup(){$users = M('admin a')->join('yixiang_auth_group_access agc on a.id=agc.uid')->join('yixiang_auth_group ag on ag.id = agc.group_id')->field('a.id as id,a.username as username,ag.title as title')->select(); // dump($users);die();$groups = M('AuthGroup ag')->select();$count = count($users);$this->assign('users',$users);$this->assign('groups',$groups);$this->assign('count',$count);$this->display();}/*** 編輯用戶(hù)組*/public function editgroup(){if ($_POST){$uid = $_POST['userid'];$groupid = $_POST['groupid'];$data = array('group_id'=>$groupid);M('AuthGroupAccess')->where(array('uid'=>$uid))->save($data);$returndata = array('code'=>1,'message'=>'success');$this->ajaxReturn($returndata);}}public function getOnemenu(){$menu = M('AuthRole')->where(array('pid'=>0))->select();return $menu;}public function setmenu(){$this->display('Common/nav');} } 與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Thinkphp中Auth认证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。