求助:Auth::id () 可以 dd 出来,但是很奇怪,生成二维码就不见了。。。

public function show(UserPromoteTemplate $UserPromoteTemplate)
    {
        $qrcode = QrCode::size(300)
                    ->margin(0)
                    ->generate('foo'.\Auth::id());

        return View('mobile.promote.template_detail', compact('UserPromoteTemplate', 'qrcode'));
    }

    public function getPromoteImg(UserPromoteTemplate $UserPromoteTemplate)
    {
        $file = 'https://www.foo.cn/foo.jpg';
        $statusCode = substr(get_headers($file)[0], 9, 3);
        if($statusCode == 200) {
            return response()->json(['path'=>$file]);
        } else {
            SnappyImage::loadFile('https://www.foo.cn/'.$UserPromoteTemplate->id)
                ->setOption('width', 1200)
                ->save('foo.jpg');

            return response()->json(['path'=>'foo.jpg']);
        }
    }

show方法是用来生成html版的页面,getPromoteImg方法用SnappyImage扩展把html保存成图片,然后返回给用户,有一个奇怪的地方,单独访问show方法,页面里生成的二维码是正常的,扫描以后也是我需要的路径,但是。。。用getPromoteImg生成的图片里,二维码扫描以后Auth::id(),就没了。。。。

比如访问show方法二维码扫描以后得到的地址是:

http://www.foo.com/?tid=123&uid=1

但是getPromoteImg方法二维码扫描以后得到的地址是:

http://www.foo.com/?tid=123&uid=

Auth::id(),就没了。。。。这是为什么。。。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

改成SnappyImage::loadHtml了,两个方法也合并成了一个,问题暂时解决了,可是我依然不明白为什么Auth::id()会丢了。。。

4年前 评论
leo

Snappy 抓取网页的时候是不会带有 cookie 的,所以拿到的 Auth::id() 肯定是空

4年前 评论
wongvio (楼主) 4年前
public function show(UserPromoteTemplate $UserPromoteTemplate)
    {
        $qrcode = QrCode::size(300)
                    ->margin(0)
                    ->generate(\Config::get('app.url').'/testpsies/'.$UserPromoteTemplate->testpsy_id.'?tid='.$UserPromoteTemplate->testpsy_id.'&uid='.Auth::id());

        $file = \Config::get('app.url').'/uploads/userpromote_images/uid'.Auth::id().'/UserPromoteTemplate_t'. $UserPromoteTemplate->testpsy_id .'_id'.$UserPromoteTemplate->id.'.jpg?'.time();
        //get_headers 获取的是请求状态数组,下标0就是http状态,格式:HTTP/1.1 200 OK,所以截取后判断
        $statusCode = substr(get_headers($file)[0], 9, 3);

        if($statusCode == 200) {
            return response()->json(['path'=>$file]);
        } else {
            SnappyImage::loadHtml('<div class="template-qrcode">'.$qrcode.'</div>')
                ->setOption('width', 1200)
                ->save('uploads/userpromote_images/uid'.Auth::id().'/UserPromoteTemplate_t'. $UserPromoteTemplate->testpsy_id .'_id'.$UserPromoteTemplate->id.'.jpg');

            return response()->json(['path'=>'/uploads/userpromote_images/uid'.Auth::id().'/UserPromoteTemplate_t'. $UserPromoteTemplate->testpsy_id .'_id'.$UserPromoteTemplate->id.'.jpg']);
        }
    }

改成这样也是可以的

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!