2015-05-05 40 views
2

我想安裝Yii2像傳統的用戶/管理系統一樣先進。前端將是/用戶,後端將是/ admin,並將使用數據庫中的相應表(用戶和管理員)。我沒有將前端和後端重命名爲用戶和管理員。Yii2高級 - 使後端使用'管理'表和'管理'模型

使用migrate生成'user'表及其所有字段。我註冊創建一個新用戶,所有這些都很完美。然後我複製'user'表並將其命名爲'admin',並將用戶名更改爲admin。我可以更改密碼,或截斷它,註冊新的管理員用戶,然後從後端刪除註冊。在數據庫本身的管理表本身並不是問題,因爲我沒有得到那麼遠,當我達到錯誤..

我已經安裝和使用Yii2先進就好了在它的前端(用戶)的一面。當然,你有Yii :: $ app-> user,它在前端工作得很好。我可以登錄,它使用'用戶'表。前端工程很好...

現在在後端(管理員)我需要它使用'管理員'表。我知道你指定了在模型中使用的表格。我複製了/common/models/User.php並且擁有/common/models/Admin.php,並且更新了該函數以代替使用'admin'表。

我也複製/vendor/yiisoft/yii2/web/User.php並把它放在/common/models/web/Admin.php(從用戶到管理員改名類的名稱)

然後,我編輯了/backend/config/main.php以反映Admin(class和identityClass)的更改。


/backend/config/main.php

'components' => [ 
    'admin' => [ 
     'identityClass' => 'common\models\Admin', 
     'class' => 'common\models\web\Admin', 
     'enableAutoLogin' => true, 
    ], 
], 

/common/models/web/Admin.php

class Admin extends Component { ... } 

/普通/模型/管理員.php

class Admin extends ActiveRecord implements IdentityInterface { 
    public static function tableName() 
    { 
     return '{{%admin}}'; 
    } 
} 

錯誤:User::identityClass must be set. < - 正如你所看到的,它仍然引用了用戶模型的一些如何......

此外,當我得到這個設置,我會使用的Yii :: $ APP->管理員而不是Yii :: $ app-> user?就像檢查他們是否使用isGuest登錄一樣。

我想確保用戶無法登錄到前端,然後手動轉到後端並登錄!

回答

2

我已經解決了這個:)

你必須編輯每個(前端和後端)的主要配置,並指定「identityClass」爲用戶組件,並添加「會話」和「請求」的名單。前端配置的

例子:

'components' => [ 
    'user' => [ 
     'identityClass' => 'common\models\User', 
     'enableAutoLogin' => true, 
     'identityCookie' => [ 
      'name' => '_frontendUser', // unique for frontend 
     ] 
    ], 
    'session' => [ 
     'name' => 'PHPFRONTSESSID', 
     'savePath' => sys_get_temp_dir(), 
    ], 
    'request' => [ 
     // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 
     'cookieValidationKey' => '[RANDOM KEY HERE]', 
     'csrfParam' => '_frontendCSRF', 
    ], 
], 

後端配置的實例:

​​

有關更詳細的指導,你可以閱讀我創建了維基。

維基百科:[Guide] How to actually separate Frontend and Backend on Yii2 Advanced