同一浏览器中两个Laravel项目互踢登录问题求助
解决Laravel 5.3同域名不同端口项目会话冲突问题
嘿,这个坑我之前踩过!本质是两个项目默认用了相同的会话Cookie配置,导致同域名下的Cookie互相覆盖,登录一个就把另一个的会话冲掉了。给你几个实用的解决方案:
修改会话Cookie名称
Laravel默认的会话Cookie名是laravel_session,两个项目用同一个名字肯定会冲突。打开每个项目的config/session.php文件,找到'cookie'配置项,给每个项目设置独一无二的名字:// 前端项目 'cookie' => 'frontend_session', // 端口75的后台项目 'cookie' => 'admin_port75_session', // 端口81的后台项目 'cookie' => 'admin_port81_session',修改后记得清除浏览器的Cookie,同时删掉项目
storage/framework/sessions目录下的旧会话文件,避免残留影响。设置不同的Cookie路径
如果你想保留Cookie名称,也可以给每个项目指定不同的Cookie生效路径。同样在config/session.php里修改'path'项:// 主域名项目(example.com) 'path' => '/', // 端口75的项目 'path' => '/public', // 也可以设成更专属的路径比如'/admin' // 端口81的项目 'path' => '/panel', // 自定义一个独有的路径这样每个项目的Cookie只会在自己的路径下生效,不会干扰其他项目的会话。
配置会话前缀区分
如果你们用的是文件、Redis或者数据库这类共享型会话驱动,还可以给每个项目设置不同的会话前缀。在config/session.php里找到'prefix':// 前端项目 'prefix' => 'frontend_', // 端口75的后台项目 'prefix' => 'admin75_', // 端口81的后台项目 'prefix' => 'admin81_',这样即使会话存储在同一个地方,不同项目的会话数据也会因为前缀不同而被区分开,不会互相覆盖。
最后提醒下:修改完配置后,最好重启一下你的开发服务器(比如Valet、Homestead或者内置的PHP服务器),确保新配置被加载生效。
内容的提问来源于stack exchange,提问作者Deepesh singh
相关产品推荐
相关产品推荐

