如何在使用相同数据库的两个 yii2 应用程序中管理登录

问题描述

  1. 我有两个使用相同数据库的后端应用程序。如果用户登录一个应用程序并在另一个选项卡中导航其他应用程序 url,它会加载内页而无需登录该应用程序。这是否可以限制或这是预期的功能

    Application 1 - www.test.com/app1
    Application 2 = www.test.com/app2
    
  2. 我必须设置谁可以访问一个应用程序以及谁可以访问第二个应用程序。有可能这样做吗?是否可以使用 RBAC?目前我们实现了基于权限的表集,并尝试在登录和导航页面时检查权限是否有足够的权限这样做。

谢谢

解决方法

您需要更改生成的会话 cookie 的名称,我的猜测是您遇到了这种情况,因为两个应用程序中的会话 cookie 的名称是相同的,并且您使用相同的浏览器来验证App2 当您登录到 APP1 时,它会强制浏览器为会话读取相同的 cookie 并发现您已经登录。

在如下两个应用程序的配置中更改它们

应用 1

'session' => [
    // this is the name of the session cookie used for login on the backend
    'name' => 'app1-frontend','class' => 'yii\web\DbSession','cookieParams' => [
        'httpOnly' => true,],

应用 1

'session' => [
    // this is the name of the session cookie used for login on the backend
    'name' => 'app2-frontend',

如果您想为前端和后端单独登录,您也可以对前端和后端配置执行相同的操作。