帮助首页 > 网站更新修复说明 · Worker 模块修复 > Worker 模块登录重定向问题分析

Worker 模块登录重定向问题分析

Worker模块登录重定向问题分析和修复方案

问题描述

已登录的用户访问Worker模块页面时,被错误地重定向到登录页。

问题分析

1. 可能的原因

原因1:getUid() 函数缺少错误处理

  • 问题:如果Cookie为空或解密失败,getUid() 可能返回0,导致已登录用户被误判为未登录
  • 位置Banyan/Common/common.php 第18-28行
  • 修复:添加完整的错误处理,确保在Cookie无效时正确返回0

原因2:登录检查逻辑顺序问题

  • 问题:在判断是否为登录页之前就获取了uid,可能导致逻辑混乱
  • 位置Banyan/Lib/Action/Worker/CommonAction.class.php 第9-58行
  • 修复:先判断是否为登录页,再获取uid进行登录检查

原因3:Cookie可能无效

  • 问题:Cookie可能因为域名、路径、过期等原因无法读取
  • 检查:需要确认Cookie设置是否正确

修复方案

修复1:优化 getUid() 函数

文件Banyan/Common/common.php

修改内容

  • 添加Cookie空值检查
  • 添加解密失败检查
  • 添加token格式验证

修复2:优化登录检查逻辑

文件Banyan/Lib/Action/Worker/CommonAction.class.php

修改内容

  • 先判断是否为登录页,如果是则直接返回
  • 只在需要检查登录时才获取uid
  • 简化判断逻辑

需要上传的文件

  1. Banyan/Common/common.php - 修复getUid()函数
  2. Banyan/Lib/Action/Worker/CommonAction.class.php - 优化登录检查逻辑

测试步骤

  1. 清除Cookie测试

- 清除浏览器Cookie

- 访问Worker模块页面

- 应该被重定向到登录页

  1. 已登录用户测试

- 正常登录系统

- 访问 https://www.baoanfuwu.cn/worker/index/index.html

- 应该能正常显示页面,不被重定向

  1. 登录页测试

- 访问 https://www.baoanfuwu.cn/worker/passport/login.html

- 应该能正常显示登录页,不会重定向循环

调试方法

如果问题仍然存在,可以添加调试代码:

// 在 CommonAction.class.php 的 _initialize() 方法中添加
error_log("Worker Debug - uid: " . $this->uid . ", cookie exists: " . (isset($_COOKIE['BYCMS_TOKEN']) ? 'yes' : 'no') . ", controller: " . $current_controller . ", action: " . $current_action);

查看服务器错误日志,确认:

  • uid的值是否正确
  • Cookie是否存在
  • 控制器和操作名是否正确

注意事项

  1. Cookie设置:确保 setUid() 函数设置的Cookie域名和路径正确
  2. 加密密钥:确保 AUTH_KEY 配置正确,否则解密会失败
  3. Cookie过期时间:当前设置为72小时,如果过期会导致需要重新登录

修复日期:2026-01-24

问题状态:已修复

copyright 2013-2113 www.baoanfuwu.cn All Rights Reserved 保安服务网版权所有
皖ICP备2021016109号-1