跨子域身份验证和身份 Cookie

如果是自动登录或记住我cookie,则应用与子域 cookie 相同的怪癖。但是这次你需要配置用户组件,将 identityCookie 数组设置为所需的 cookie 配置。

打开应用程序配置文件并将 identityCookie 参数添加到用户组件配置:

$config = [
    // ...
    'components' => [
        // ...
        'user' => [
            'class' => 'yii\web\User',
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
            'loginUrl' => '/user/login',
            'identityCookie' => [ // <---- here!
                'name' => '_identity',
                'httpOnly' => true,
                'domain' => '.example.com',
            ],
        ],
        'request' => [
            'cookieValidationKey' => 'your_validation_key'
        ],
        'session' => [
            'cookieParams' => [
                'domain' => '.example.com',
                'httpOnly' => true,
            ],
        ],

    ],
];

请注意,cookieValidationKey 对于所有子域应该相同。

请注意,你必须将 session::cookieParams 属性配置为与 user::identityCookie 具有相同的域,以确保 loginlogout 适用于所有子域。在下一节中将更好地解释此行为。