万维当云伯乐 CDN华纳云
ThinkPHP2025-03-21912 阅读

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

本文摘要定义了一个构造函数,代码如下:
丽萨主机
AD:
【广告招商】文章正文文字广告位开放合作
定义了一个构造函数,代码如下:
<?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();
    }
}
再次访问,重定向即可生效。
广告招商文章内容详情页下 · 优质席位开放中合作咨询