2016-09-16 9 views
1

"vendor"と "clients"の2種類のユーザーがあります。そして私は現在Laravel's built-in Auth Controllersmake:authコマンドから)を使用してクライアントのユーザ認証を行っています。Laravel 5.3事後認証用のカスタムパスリダイレクト

そして、私は、ユーザーの2種類を持っているので、私は/client/homeLoginControllerRegisterController、およびResetPasswordController$redirectToプロパティを変更しました。ここで

が証拠である:今

RegisterController LoginController

、それは/client/homeに私が正常に登録、ログイン、およびパスワードのリセットを行うたびにリダイレクトします。私はmysite.com/registerやアドレスバーを経由してmysite.com/loginへ行くしようとするたび

しかし、私はすでにmysite.com/client/homeにいるときに問題がある、それは私がどのように作ることができます...代わりにmysite.com/client/homemysite.com/home

をリダイレクトします認証されたユーザーが/loginまたは/registerに移動しようとするたびにmysite.com/client/homeにリダイレクトされますか?

答えて

0

最も簡単な選択肢は、両方のログイン領域に対して別々のコントローラを作成することです。後で管理する方が簡単になり、動作を少しカスタマイズすることができます。

デフォルトのフォルダ構造は次のようになります。

app 
|__Http 
    |__Controllers 
     |__Auth 
     |__ForgotPasswordController.php 
     |__LoginController.php 
     |__RegisterController.php 
     |__ResetPasswordController.php 

あなたはそうのように、クライアント・コントローラの追加のフォルダを作成することができます。あなたは、それぞれの$redirectToプロパティをカスタマイズすることができます

app 
|__Http 
    |__Controllers 
     |__Auth 
     | |__ForgotPasswordController.php 
     | |__LoginController.php 
     | |__RegisterController.php 
     | |__ResetPasswordController.php 
     |__Client 
     |__Auth 
      |__ForgotPasswordController.php 
      |__LoginController.php 
      |__RegisterController.php 
      |__ResetPasswordController.php 

この方法コントローラを個別に制御します。

public function redirectPath() 
{ 
    if (\Request::is('client/*')) 
    { 
     return url('client/home'); 
    } 

    return url('home'); 
} 

この第二の利点を:

は、代替ソリューションとして、あなたはあなたが好きなあなたのそれぞれのコントローラにredirectPath方法を作成することにより、RedirectsUsers形質のredirectPathを上書きして、URLを返すことができますコントローラのアクションと名前付きルートも返すことができます。私は個人的にはURLへのルーティングが好きではなく、あたかもそれらを変更するかのように、どこでも変更する必要があります。コントローラのアクションを使用する方が良い考えですが、後でコードをリファクタリングすると同じ問題に遭遇する可能性があります。私はそれらに賢明な名前を付けることができ、再びそれらを変更することはできませんが、依然としてすべてのリダイレクトを正常な順序で保つことができるので、名前付きルートを使用することを好みます。

+0

クライアント固有の認証コントローラ用のClientsフォルダを作成し、それらのクライアントへのルートを指示した場合、個々のredirectToプロパティを 'client/home'に設定するだけで、すでに出力? –

+0

はい、そうです。 –

関連する問題