请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

initialize 中 redirect 无法跳转问题

老师好

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

3回答

静秋叶 2021-12-26 22:16:13

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

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

继承父类的initialize方法

0 回复 有任何疑惑可以回复我~
  • 提问者 誓言玄夏 #1
    好的感谢,我试下
    回复 有任何疑惑可以回复我~ 2021-12-26 22:25:44
singwa 2021-11-01 23:05:18

https://img1.sycdn.imooc.com//szimg/618001f409de33d112140638.jpg

这个返回为空?


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

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

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

0 回复 有任何疑惑可以回复我~
  • 提问者 誓言玄夏 #1
    老师好,session设置成功了,用header跳转函数就完全正常
    回复 有任何疑惑可以回复我~ 2021-11-01 23:14:46
  • singwa 回复 提问者 誓言玄夏 #2
    好的。也就是说你的问题是解决了吗
    回复 有任何疑惑可以回复我~ 2021-11-01 23:15:49
  • 提问者 誓言玄夏 #3
    用redirect函数不行,用PHP 原生header函数可以,所以还是有问题
    回复 有任何疑惑可以回复我~ 2021-11-01 23:23:08
singwa 2021-10-27 10:50:05

同学您好

https://img1.sycdn.imooc.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都执行了 
    
    </span><span class=sf-dump-num>111</span>
    </pre><script>Sfdump("sf-dump-925701322")</script>
    <pre class=sf-dump id=sf-dump-1732717410 data-indent-pad="  "><span class=sf-dump-default>^</span><span class=sf-dump-default> </span><span class=sf-dump-const>null</span>
    </pre><script>Sfdump("sf-dump-1732717410")</script>
    <pre class=sf-dump id=sf-dump-2024567921 data-indent-pad="  "><span class=sf-dump-default>^</span><span class=sf-dump-default> </span><span class=sf-dump-num>222</span>
    回复 有任何疑惑可以回复我~ 2021-10-28 22:35:33
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号