本文是对之前《yii2实现跨域sso登录解析》一文的进一步优化与完善。前文已详细介绍了sso单点登录的核心流程与基础架构,本文在此基础上聚焦于实际落地中的关键痛点,从用户体验与系统健壮性两个维度进行增强。首要优化点在于跨子域场景下的会话一致性保障:当用户已在www.xxx.com完成登录后,若直接访问login.xxx.com,系统应仅展示登录入口页面,且不中断当前会话;待其跳转回www.xxx.com时,原有身份状态完整保留,无需再次认证。第二项改进是重构会话生命周期管理,将session的有效期设为理论最大值,显著延长用户无感在线时长,有效规避频繁重登带来的操作断点。
1、 需求梳理
2、 访问login.XXX.com时,仅呈现登录界面,不触发登出逻辑;既存session及关联cookie保持有效。系统支持“长期在线”模式——只要用户未主动执行退出操作,即可持续维持认证状态,全程免重复鉴权。
3、 实现细节说明
4、 对login模块下的SiteController.php中Login方法进行逻辑重构,重点优化请求判断条件与参数响应策略。
5、 优化前的原始代码如下

6、 优化后的代码实现如下



标签: php redis apache nginx cookie yii session 跨域 常见问题 red
还木有评论哦,快来抢沙发吧~