根据上一节内容 Auth权限认证规则与管理组创建 我们创建好了相关的规则和管理组。下面介绍下如何在其他控制器中进行权限认证:
在控制器Controller目录中创建以下控制器。
1.创建登录控制器 LoginController.class.php
namespace Admin\Controller;
use Think\Controller;
class LoginController extends Controller{
public function index(){
if(IS_POST){
$_POST['password'] = md5($_POST['password']);
$user = M('user');
if($user->create()){
if($data = $user->where(I())->find()){
$_SESSION['user'] = $data;
$this->success("登录成功!",U("Index/index"));
}else{
$this->error("登录失败");
}
}else{
$this->error("登录失败");
}
exit;
}
$this->display();
}
public function logout(){
$_SESSION['user'] = array();
$this->redirect("Login/index");
}
}
2.创建公共控制器 PublicController.class.php
namespace Admin\Controller;
use Think\Controller;
class PublicController extends Controller{
public function _initialize(){
//判断登录
$uid = $_SESSION['user']['id'];
if(!$uid){
$this->error("请先登录!",U("Login/index"));
}
//判断超级管理员
if($uid == 6){
return true;
}
//权限认证
$auth = new \Think\Auth();
$rule = CONTROLLER_NAME.'/'.ACTION_NAME;
if(!$auth->check($rule,$uid)){
$this->error("没有权限");
}
}
}
3.在其他控制器继承 PublicController.class.php
namespace Admin\Controller;
class IndexController extends PublicController {
public function index(){
$this->display();
}
}
完成以上即可实现Auth权限认证控制。
