部署 ecshop 4.0 H5端,发现循环弹出微信授权登录,初步判断是登录状态问题,和前端联调发现前端拿不到 cookie,api 接口(api.test.demo)给 h5端(h5.test.deom) 设置 cookie,直接给 h5.test.demo 设置,cookie不会生效,只能给主域 test.demo 设置才会生效。

查看微信登录回调接口 appserver\app\Http\Controllers\v2\UserController.php 中的 webCallback 方法,

if (isset($_GET['referer'])) {

    Log::info('微信认证回调成功', $data);

    if (isset($data['openid'])) {
        Log::info('设置的cookie为' . config('app.domain_url'));
        setcookie('o', $data['openid'], time()+7200, '/', config('app.domain_url'));
    }



    if (isset($data['token'])) {
        setcookie('t', $data['token'], time()+7200, '/', config('app.domain_url'));
    }

    return redirect(urldecode($_GET['referer']));
}

可以看到是给 domain_url 设置cookie

所以需要注意 appserver/.evn 中的 DOMAIN_URL 配置

#商城Domain (此处必须为主域名,设置二级域名无效,api域名、H5域名必须为此主域下的域名)
DOMAIN_URL=test.demo

#商城url
SHOP_URL=http://h5.test.demo

 

#分享url
SHARE_URL=http://:h5.test.demo/h5

#H5商城
SHOP_H5=http://h5.test.demo/h5