Thinkphp单应用中用中间件处理权限

因为开发的系统功能比较简单,所以直接用单应用,权限系统也很简单,就是判断是否管理员登录,如果不是跳到登录页面


1、在app目录下新建一个文件夹middleware,在里面创建文件Admin.php,内容如下

<?php
namespace app\middleware;

class Admin
{
    public function handle($request, \Closure $next)
    {
   
        // 添加中间件执行代码
        // 判定用户是否登录
       $loginAdmin =session('adminAccount');
        if (!$loginAdmin) {
            return  redirect('/admin/login');
        } else {
            return $next($request);
        }
    }
}

2、编辑config\middleware.php,修改为

<?php
// 中间件配置
return [
    // 别名或分组
    'alias' => [
        'checkadmin'  => app\middleware\Admin::class,
    ],

    // 优先级设置,此数组中的中间件会按照数组中的顺序优先执行
    'priority' => [],
];

3、编辑app\middleware.php,去掉session的注释,修改后如下

<?php
// 全局中间件定义文件
return [
    // 全局请求缓存
    // \think\middleware\CheckRequestCache::class,
    // 多语言加载
    // \think\middleware\LoadLangPack::class,
    // Session初始化
    \think\middleware\SessionInit::class,
];

4、在需要判断登录的页面,类属性中增加一个中间件属性,protected $middleware = ['checkadmin'],例如文章管理类中

<?php
declare(strict_types = 1);

namespace app\admin\controller;

use think\Request;
use think\facade\Db;

class AdminArticle
{
    protected $middleware = ['checkadmin'];
    public function index()
    {
        return redirect('adminarticle/list')->send();
    }

5、切记在登录页面不要加这个,否则会陷入死循环中。

随机推荐

(function(){ var src = "https://s.ssl.qhres2.com/ssl/ab77b6ea7f3fbf79.js"; document.write('