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

How to manage logins in two yii2 applications which use same database

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

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

谢谢

您需要更改生成的会话 cookie 的名称,我猜您遇到这种情况是因为两个应用程序中会话 cookie 的名称相同,并且您使用的是相同的浏览器当您登录到 APP1 时验证 App2,这会强制浏览器为会话读取相同的 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',
    'class' => 'yii\web\DbSession',
    'cookieParams' => [
        'httpOnly' => true,
    ],
],

如果你想为前端和后端单独登录,你也可以为前端和后端配置做同样的事情。