ThinkPHP 5 檢測使用者是否登入並根據許可權調到頁面
阿新 • • 發佈:2018-12-22
需求:當用戶沒有登入時禁止評論或者建立某些東西
首先先要檢測使用者是否處於登入狀態,沒有的話需要先登入
其實就是檢測當前session 或者 cookie是否有值
1.建立一個檢測類
注意:名稱空間要正確 我當前目錄如下 我在inde模組下新建一個behavior資料夾所以我的名稱空間是
namespace app\index\behavior;
<?php namespace app\index\behavior; use think\Controller; class UserCheck { use \traits\controller\Jump;//類裡面引入jump類 //繫結到CheckAuth標籤,可以用於檢測Session以用來判斷使用者是否登入 public function run(&$params){ $uid = session('user'); // 這裡的session 是當用戶登入成功後建立的一個session 如果沒有的話就代表沒有使用者登入 // var_dump($uid); if(!isset($uid)){ $uid = ""; } if($uid == null || $uid == "" || $uid == "null" || $uid == 0){ return $this->error('您還未登入,請先登入!','admin/login/login', 1); } } }
說到這我們再來說一下這個jump類是幹啥的 顧名思義肯定是用來跳轉的
同樣的先來看一下目錄
return $this->error('您還未登入,請先登入!','admin/login/login', 1);
其實這個error方法救贖 jump類裡面的當然裡面還有好多 比如:success redirect 效果就是如下:
有點扯遠了 接下來我們看下一步
2 . 宣告該檢測類
在哪宣告呢 ? 在application資料夾tags.php檔案,如果沒有就自己建立一個。內容如下:
3. 最後一步就是在控制器中使用了 程式碼如下:
Hook類也是一個系統類 目錄在:ThinkPHP\library\think\Hook.php
//引入Hook類
use think\Hook;
//index方法
public function index()
{
Hook::listen('CheckAuth',$params);
return $this->fetch();
}
到這裡就可以了