服务器测评网
我们一直在努力

ThinkPHP8 构造函数 __construct 中使用 redirect 无效的解决办法

广告

定义了一个构造函数,代码如下:

<?php

namespace app\controller;

use app\BaseController;
use think\facade\Log;
use think\facade\Session;

class Admin extends BaseController
{
    public function __construct()
    {
        Log::debug('Checking admin session');
        // 判断是否登录
        if(!session('?admin')){
            Log::debug('session not found');
            // 未登录,跳转到登录页
            return redirect('/admin/login');
            die;
        }
    }
    public function index()
    {
        return view();
    }
    public function login(  )
    {
        return view();
    }
}

但是发现return redirect(‘/admin/login’)不生效,特意加了die也一样无法执行。

通过了解,发现这里需要手动调用执行,也就是执行当前响应对象的send方法输出。

修改后的代码如下所示:

<?php

namespace app\controller;

use app\BaseController;
use think\facade\Log;
use think\facade\Session;

class Admin extends BaseController
{
    public function __construct()
    {
        Log::debug('Checking admin session');
        // 判断是否登录
        if(!session('?admin')){
            Log::debug('session not found');
            // 未登录,跳转到登录页
            return redirect('/admin/login')->send();
            die;
        }
    }
    public function index()
    {
        return view();
    }
    public function login(  )
    {
        return view();
    }
}

再次访问,重定向即可生效。

好主机测评广告位招租-300元/3月
赞(0) 打赏
未经允许不得转载:好主机测评网 » ThinkPHP8 构造函数 __construct 中使用 redirect 无效的解决办法
好主机测评广告位招租-200元/3月
好主机测评广告位招租-100元/3月

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫