我有一个自定义成员系统:Yii2 Members System。您可以参考它以获取完整的详细信息,或者安装它以便您可以使用它来解决此问题。
我有frontend
和backend
,就像Yii2提供的一样,只需进行一些修改即可分隔会话/ Cookie,以便backend
与管理员模型一起使用并从{{1表。与旧的传统成员系统类似。
admin
基本上是mainsite
的克隆,它的角色是成为主要网站。您转到frontend
或www.site.com
后会得到什么。
以下是3个应用及其示例域:
当用户登录(site.com
)并返回主页(users.site.com/site/login
mainsite
)时,我希望它知道他们已登录并显示其用户名。就像前端默认从高级应用程序操作一样。
从我到目前为止,我登录并返回主管,只读www.site.com
。它看起来不像是Yii错误,而是服务器错误?当我在运行时查看Yii日志时,它提到了访问控制:
An internal server error occurred.
以下是我的一些配置。
mainsite /配置/ main.php
2017-04-14 13:38:25 [127.0.0.1][1][-][error][yii\web\HttpException:403] exception 'yii\web\ForbiddenHttpException' with message 'You are not allowed to perform this action.' in /Applications/XAMPP/xamppfiles/htdocs/yii2-members-system/vendor/yiisoft/yii2/filters/AccessControl.php:151
前端/配置/ main.php
'components' => [
'assetManager' => [
'bundles' => false,
],
'request' => [
'csrfParam' => '_csrf-mainsite',
],
'user' => [
'class' => 'common\components\User',
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => [
'name' => '_identity-frontend',
'httpOnly' => true,
'domain' => '.yii2-members-system.dev',
],
],
'session' => [
'name' => 'advanced-frontend',
'cookieParams' => [
'domain' => '.yii2-members-system.dev',
'httpOnly' => true,
],
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
],
虚拟主机
'components' => [
'assetManager' => [
'bundles' => false,
],
'request' => [
'csrfParam' => '_csrf-frontend',
],
'user' => [
'class' => 'common\components\User',
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => [
'name' => '_identity-frontend',
'httpOnly' => true,
'domain' => '.yii2-members-system.dev',
],
],
'session' => [
'name' => 'advanced-frontend',
'cookieParams' => [
'domain' => '.yii2-members-system.dev',
'httpOnly' => true,
],
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
],
答案 0 :(得分:1)
您可以在子域或主域之间共享会话。根据yii配置,您需要在 frontend / config / main.php 和 mainsite / config / main.php 中进行如下配置。
'request' => [
'csrfParam' => '_csrf-app',
],
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => ['name' => '_identity', 'httpOnly' => true, 'domain'=>'.yii2-members-system.dev', 'path'=>'/'],
],
'session' => [
'name' => 'sessionName',
'savePath'=> __DIR__ . '/../../sessionTmp'
],
在此配置中,会话名称,会话保存路径,身份cookie路径和域应与其他子域匹配,以在两个yii应用程序之间共享会话。
因此,在您的应用内创建一个tmp文件夹,并将其指向会话保存路径。像上面一样。
我希望,这会有所帮助。