2017-03-21 13 views
1

私はYii2基本テンプレートを使って管理パネルを作成しています。 adminログインの場合は、useridentityクラスとデフォルトのユーザーモデルyiiを使用しました。Yii2フロントエンドとバックエンドのセッションを分けるための基本テンプレート

私はフロントエンドのログインを作成する必要があります。フロントエンドとバックエンドの同じブラウザにログインできるように、別のログインを行うにはどうすればよいですか?

基本テンプレートでは、同じアイデンティティクラスとモデルに問題があります。

adminとfrontendユーザーに同じデータベースのユーザーテーブルを使用する必要があります。

これを管理する最善の方法を提案してください。

答えて

1

これは正しい方法であり、この「問題」を回避するには、フロントエンドとバックエンドに対して異なるセッションを宣言することです。

Yii2高度なテンプレートは、株式に含まれ、この機能を持っており、私はあなたが再びホイールを発明起動し、ちょうど高度なテンプレートにプロジェクトを移動しないようお勧めします。

勿論、管理者だけに新しいモデルと新しいテーブルを作成することができます。しかし、この新しいクラスはまだIdentityInterface

あなたAdminUserModelは次のようになります何か実装する必要があります。

namespace app\models; 

use yii\db\ActiveRecord; 
use yii\web\IdentityInterface 

class AdminUser extends ActiveRecord implements IdentityInterface 
{ 

    /** Dont froget all the related stuff like behaviours, properties etc **/ 

    /** 
    * @inheritdoc 
    */ 
    public static function tableName() 
    { 
     return 'admin_user'; 
    } 

    public static function findIdentity($id) 
    { 
     return static::findOne($id); 
    } 

    public static function findIdentityByAccessToken($token, $type = null) 
    { 
     return static::findOne(['access_token' => $token]); 
    } 

    public function getId() 
    { 
     return $this->id; 
    } 

    public function getAuthKey() 
    { 
     return $this->authKey; 
    } 

    public function validateAuthKey($authKey) 
    { 
     return $this->authKey === $authKey; 
    } 
} 

をそして、あなたはこのルートを行くことに決めるならば、私もADMINUSERモデルで、通常のUserモデルを拡張するためにあなたをお勧めします多くのプロパティと機能が同じになるためです。

0

モジュールを使用して管理パネルを作成することをおすすめします。

関連する問題