我已经创建了一个定制的成员系统:Yii2成员系统。您可以参考它获得完整的详细信息,或者安装它,这样您就可以使用它来解决这个问题。
我有frontend和backend,就像Yii2提供的那样,通过一些修改将会话/cookie分离开来,这样backend就可以与Admin模型一起工作,并从admin表中提取出来。类似于旧的传统成员制度。
mainsite基本上是frontend的一个克隆,它的作用是成为主要网站。当你去www.site.com或site.com时,你得到了什么。
以下是3个应用程序及其示例域:
当用户登录(users.site.com/site/login)并返回主页(mainsite at www.site.com)时,我希望它知道他们已经登录并显示了他们的用户名。就像前端在高级应用程序中默认的运行方式一样。
根据我到目前为止的情况,我登录并返回到主站点,它只读取An internal server error occurred.。它看起来不像Yii错误,而是服务器错误?当我在运行时查看Yii日志时,它提到了访问控制:
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这是我的一些吐露。
mainsite/config/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' => [
],
],
],frontend/config/main.php
'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' => [
],
],
],vhost
<VirtualHost *:80>
ServerName yii2-members-system.dev
ServerAlias yii2-members-system.dev
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/yii2-members-system/mainsite/web"
ErrorLog "logs/mainsite.yii2-members-system.dev-error_log"
CustomLog "logs/mainsite.yii2-members-system.dev-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerName yii2-members-system.dev
ServerAlias admin.yii2-members-system.dev
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/yii2-members-system/backend/web"
ErrorLog "logs/admin.yii2-members-system.dev-error_log"
CustomLog "logs/admin.yii2-members-system.dev-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerName yii2-members-system.dev
ServerAlias users.yii2-members-system.dev
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/yii2-members-system/frontend/web"
ErrorLog "logs/users.yii2-members-system.dev-error_log"
CustomLog "logs/users.yii2-members-system.dev-access_log" common
</VirtualHost>发布于 2017-04-17 05:41:23
您可以在子域或主域之间共享会话。按照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路径和域应该与其他子域匹配,以便在两个应用程序之间共享会话。
因此,在应用程序中创建一个tmp文件夹,并将其指向会话保存路径。就像上面一样。
希望这能帮上忙。
https://stackoverflow.com/questions/43418088
复制相似问题