编程语言
首页 > 编程语言> > php-具有共享会话的Yii2高级应用程序不会在会话超时时自动登录

php-具有共享会话的Yii2高级应用程序不会在会话超时时自动登录

作者:互联网

我是新来的.我有一个有关Yii2高级模板共享会话的问题.

我有一个带有4个子应用程序的yii2高级应用程序:

frontend - landing page, login
backend - admin panel
customer - panel for customers
provider - panel for providers

我有一个始终从前端应用程序登录的应用程序,根据我的角色,我被重定向到客户,提供商或后端应用程序.

一切正常,直到我的会话超时.在这三个内部应用程序中,我成为未经授权的用户.刷新页面无济于事,但是当我打开前端页面并尝试再次登录时,前端不会向我显示“登录表单”,而是将我重定向到具有新会话的那些应用程序之一.

看到它不再询问我的凭据,看来我可以使用前端应用程序自动登录,但是自动登录在其他三个应用程序中不起作用.

我已使用本期中的答案进行了所有应用程序的共享会话:
Yii2 Advanced – Share session between frontend and mainsite

先感谢您

解决方法:

是否在所有应用程序中都启用了enableAuoLogin参数?

'enableAutoLogin' => true,

如果是的话,即使您在应用程序之间共享会话,当您第一次执行php init命令(对于yii2-advanced)时,请注意它会为每个应用程序生成不同的cookieValidationKey.这些验证密钥用于自动登录过程.由于所有应用程序都具有相同的cookie,因此cookieValidationKey的cookie也应该相同.

这些验证密钥存储在每个应用程序的main-local.php配置文件中(前端,后端文件夹..在您的情况下,我想您还有多余的customer和provider文件夹)

解决方案之一就是将cookieValidationKey从frontend / config / main-local.php复制粘贴到其他main-local.php文件.理想情况下,您必须在root文件夹中更改init文件,使它为所有模块/应用程序生成一个单独的cookieValidationKey.

希望对您有所帮助.

标签:yii2,yii2-advanced-app,php
来源: https://codeday.me/bug/20191109/2010597.html