2017-01-13 4 views
0

先進のYii2テンプレートを使用してアプリケーションを開発しています。全く異なるフロントエンドユーザー2人Yii2先進

私は既に、バックエンドとフロントエンドのユーザーのために2つの異なるセッションを分けています。 私のmain.phpファイルは、このようなものです:私は二別々のフロントエンドユーザーを実装しようとすると、私は問題に直面しています

// frontend/config/main.php 
... 
'user' => [ 
    'identityClass' => 'common\models\User', 
    'enableAutoLogin' => true, 
], 
... 

// backend/config/main.php 
... 
'user' => [ 
    'identityClass' => 'backend\models\BEUser', 
    'enableAutoLogin' => true, 
], 
... 

。今、私は別のユーザーモデルのためにログインするとき、私は通常のフロントエンドユーザーとしてもログインしています。

RBACを使用したくないのですが、私は2種類の異なるユーザーがを完全に分離したいからです。。つまり、異なるデータベーステーブル、異なるセッション名、異なるログインページ、ウェブサイトの全く異なる部分やページへのアクセスを意味します。

私はfrontend/config/main.phpに別々の "user2"エントリを追加すると思いますが、インターネット上で同様のガイドは見つかりません。だから私はこれが不可能であると仮定します。

ご提案はありますか? ありがとうございます。私は本当にこれをテストしていません

+0

なぜだけでなく第二のフロントエンドを追加しませんか? – topher

+0

私はこれを考えました。それは非常に努力の価値がないようだ。 2番目のユーザーは、1つまたは2つの別々のページにのみ必要です。異なる設定、コントローラなどで別々のフロントエンドを作成すると、わかりませんが、あまりにも多くの労力がかかります。別の方法が必要です。 –

+0

* '異なるデータベーステーブル、異なるセッション名、異なるログインページ、ウェブサイトの全く異なる部分やページへのアクセス' *。上のすべてを考慮して努力する価値があるようです。テストとメンテナンスが簡単です。 – topher

答えて

0

、しかし、あなたはそれがログインを行うにはuser2コンポーネントを使用する代わりにuserコンポーネントを使用してのLoginForm2モデルを作成し、あなたのフロントエンドでuser2を作成することによって、それを行うことができるかもしれません。

フロントエンドの設定:

'user2' => [ 
    'class' => 'yii\web\User', 
    'identityClass' => 'common\models\User2', 
    'enableAutoLogin' => true, 
], 

LoginForm2.php:

public function login() { 
    if ($this->validate()) { 
     return Yii::$app->user2->login($this->getUser(), 1800); 
    } 
    return false; 
} 
+0

上記を実装することで、「不明なプロパティを設定する:common \ models \ User2 :: identityClass」というエラーに直面しています。何か案は? –

+0

'user2'に' class'を追加するコードを編集しました – marche

+0

投稿したコードをテストしましたか?残念ながら、これはどちらもうまくいかない。私はuser2アカウントでログインしても、私が望んでいないウェブサイトの他の部分でも通常のユーザーとしてアクセスできます。 –

関連する問題