initialize 中 redirect 无法跳转问题

来源:6-12 按base方式处理登录流

誓言玄夏

2021-10-23

老师好

tp版本 version 6.0.9

<?php
declare (strict_types = 1);

namespace app\admin\controller;

use app\BaseController;
use think\exception\HttpResponseException;
use think\Request;
use think\facade\View;

class AdminBase extends BaseController
{
    public function initialize()
    {
        //判断是否登录
        if (empty($this->isLogin())) {
            return $this->redirect((string) url("login/index"),302);
        }
    }

    /**
     * 判断是否登录
     * @return bool
     */
    public function isLogin(){
        $adminUserSession = session(config('admin.admin_user'));
        if(empty($adminUserSession)){
            return false;
        }
        return true;
    }

    /**
     * 跳转方法覆盖重写
     * @param ...$args
     */
    public function redirect(...$args){
        throw new HttpResponseException(redirect(...$args));
    }
}

未登录状态访问下 admin/index/index

已确认执行了 initialize方法,但是返回

{"status":null,"message":"","result":[]}

并没有跳转

写回答

3回答

静秋叶

2021-12-26

明显少了一行代码!!!!!

public function initialize()
{
   parent::initialize();
   // 判断是否登录
   if(empty($this->isLogin())){
       return $this->redirectUrl(url('login/index'));
   }
}
parent::initialize();

继承父类的initialize方法

0
1
誓言玄夏
好的感谢,我试下
2021-12-26
共1条回复

singwa

2021-11-01

//img.mukewang.com/szimg/618001f409de33d112140638.jpg

这个返回为空?


如果是的化,进行如下方式来排查

1、check下 你在登录的环节 是否设置session成功了。

2、 看看config("admin.admin_user") 您返回什么内容,

0
3
誓言玄夏
用redirect函数不行,用PHP 原生header函数可以,所以还是有问题
2021-11-01
共3条回复

singwa

2021-10-27

同学您好

//img.mukewang.com/szimg/6178be4e09048c8c13360598.jpg

你在这个地方打下断点 看看执行到这个地方了没

0
1
誓言玄夏
/** * 判断是否登录 * @return bool */ public function isLogin(){ dump(111); $adminUserSession = session(config('admin.admin_user')); dump($adminUserSession); dump(222); if(empty($adminUserSession)){ return false; } return true; } 老师好 ,111和222都执行了 111 <...code...>
^ 222
2021-10-28
共1条回复

全流程开发 TP6.0实战高并发电商服务系统

一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目

1463 学习 · 1332 问题

查看课程