最近改造了一个系统,用户有两种登录方式,分别是两个框架写的:
- 微信登录:使用 ThinkPHP 开发,单位 秒
setcookie ( $name , $value , 60 * 24 * 365 , $config [ 'path' ], $config [ 'domain' ]);
- 短信验证码登录:使用 Laravel 开发,单位 分钟
$respond -> cookie ( $key , $value , 60 * 24 * 365 );
于是我两个地方都写了 cookie,发现 ThinkPHP 有几个预期不一样的地方:
- 没有设置 path 的时候,会使用当前路径,比如 http://api.pauli.cn/api/v2?m=login&a=weixin 返回的 cookie path 是 /api/v2
- 我使用了 nginx 做 proxy 转发 m.pauli.cn/thinkphp/api(设置 proxy_set_header Host api.pauli.cn ), 强制设置了 cookie domain 为 m.pauli.cn,反而不管用,被替换成 .m.pauli.cn。干脆不设置 domain,然后 nginx 会一路带回来到浏览器,是当前域名