我正在开发一个具有多个级别和模块的Web应用程序。在应用程序中一切正常。
如果用户在登录后没有工作,他们会使应用程序处于登录状态,并在1小时后尝试使用它,然后会话到期并且系统状态变量丢失。因此,在这种情况下,应用程序不会重定向到登录页面(站点/登录),这是糟糕的用户体验。
我无法确定问题所在。我该如何解决这个问题?
答案 0 :(得分:0)
解决这个问题的一种方法是让控制器不直接从CController扩展。
你可以让一个中间控制器说ModuleController扩展CController。 然后所有控制器都扩展该控制器。
在ModuleController中覆盖beforeAction()并检查是否设置了会话,如果没有则重定向到登录。 因此,每次用户尝试访问页面时,它将首先检查会话是否已设置。你可以使用ACL来更好地微调这一点。
这种方法可以应用于Yii开发中的各种问题。
希望这有帮助!