私はカスタムメンバーシステムを持っています:Yii2 Members System。詳細については、それを参照するか、インストールしてこの質問に取り組むことができます。Yii2 Advanced - フロントエンドとメインサイト間のセッションを共有する(wwwのフロントエンドの複製)
私はYii2がbackend
が管理モデルで動作し、admin
テーブルから引っ張るようにセッション/クッキーを分離するために、いくつかの修正を加えて、提供して同じようにfrontend
とbackend
を持っています。古い伝統的なメンバーシステムと同様です。
mainsite
は、基本的にfrontend
のクローンであり、その役割はメインのウェブサイトです。 www.site.com
またはsite.com
に行くと何が得られますか?
- mainsite = www.site.com又はsite.com
- フロントエンド = users.site.com
- バックエンド:ここ
3つのアプリとその例ドメインであります = admin.site.com
ユーザがログインすると(users.site.com/site/login
)、ホームページに戻る(mainsite
、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
は私のconfigsの一部です。
mainsite /設定/ 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' => [
],
],
],
フロントエンド/設定/ 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' => [
],
],
],
バーチャルホスト
<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>
これはYii2テンプレートを選択するのが悪い例だと思います。なぜ高度なテンプレートですか?良いYii2の基本テンプレート+モジュールですか?これで、Yii-basic-templateでもっと速くできるのです。セッション、クッキーなどの分離が必要な場合は、Advancedが選択されます – Rafal
メインウェブサイト、ユーザーダッシュボード、管理ダッシュボード、api、メーラーなど各セグメントが完全に分離されているため、各セクションはすべてのセグメントから独立して90%他人。管理ダッシュボードで何かが壊れても、通常はユーザーダッシュボードには影響しません。ユーザーと管理者コードの分離が深ければ、セキュリティが向上します。 - 管理テーブルにアクセスできるデータベースに対して、別のユーザーを使用してadmin( 'backend')アプリケーションを使用することができます。だからあなたが悪用された場合、ユーザーセクションのadminテーブルを混乱させることはできません。 –