1. 程式人生 > >ThinkPHP 5 檢測使用者是否登入並根據許可權調到頁面

ThinkPHP 5 檢測使用者是否登入並根據許可權調到頁面

需求:當用戶沒有登入時禁止評論或者建立某些東西

 首先先要檢測使用者是否處於登入狀態,沒有的話需要先登入

其實就是檢測當前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();
}

到這裡就可以了