2016-07-24 6 views
0

私は3つの異なるタイプのユーザーを持っています:ウェブサイトのユーザー、スポンサーと管理者、それぞれがテーブルに関連付けられています。彼らは異なるフィールドを持っているので、私はテーブルをマージすることはできません。cakephp 3複数の認証ログイン

私は3種類の認証を使用したいと思いますが、どうすればいいですか?

コントローラ名 1がUserController 2. SponsorsController 3. AdminsSController

してくださいあなたはCakePHPの3.xで行うことができますどのようにサンプルコードやガイドラインに私に送られたことができます

ありがとうございました!

+0

を使用してログインパネルにアクセスすることができます(例:ユーザー名、名前、パスワード、電子メール)、そのテーブルにはスポンサー、管理者などのレコードが含まれています。データベースの構造が少し異なりますが、これらのレコードの作成と関連付けを正しく行うにはちょっとした手間がかかりますが、その結果、すべての認証関連チェックが簡素化されます。 –

+0

データベーステーブルにuser_typeフィールドを作成してから、あなたのタイプを追加してください。cakephpには簡単なブログチュートリアルがあります。 http://book.cakephp.org/3.0/ja/tutorials-and-examples/blog-auth-example/auth.html#blog-tutorial-authentication-and-authorization –

+0

私はそれをすべて同じにしておきます。ロールに基づいて後でリダイレクトするか、表示されたコンテンツを切り替えて、そのロールに基づいてフォームなどを切り替えます。これは通常、ログインURLを分割するよりも、エラーが発生しにくくなります。 – mark

答えて

0

これを達成する方法はたくさんあります。/src/Controllersフォルダの下にadmin_panelとsponsors_panelフォルダを作成するだけです。

これらのフォルダに関連するコントローラを作成し、/confing/routes.phpにルーティングを定義します。

Router::prefix('admin_panel', function ($routes) { 
    $routes->connect('/', ['controller' => 'Admin', 'action' => 'login']); 
    $routes->fallbacks('DashedRoute'); 
}); 

Router::prefix('sponsors_panel', function ($routes) { 

     $routes->connect('/', ['controller' => 'Sponsors', 'action' => 'login']); 
     $routes->fallbacks('DashedRoute'); 
    }); 

その後、あなたは私が似たような状況を扱ってきた方法は、唯一の共通のフィールドが含まれ、簡単なユーザーテーブルを持つことである

http://www.example.com/sponsors_panel

http://www.example.com/admin_panel

関連する問題