2017-01-06 14 views
3

後にリダイレクトするには、ユーザーが正常に認証されるとドキュメントLaravelはここでログイン

が、彼らは/home URIを にリダイレクトされますです。あなたは RegisterControllerLoginControllerredirectToプロパティを定義することで 場所をリダイレクトし、ResetPasswordController認証後をカスタマイズすることができます。

protected $redirectTo = '/';

リダイレクトパスがカスタム 生成ロジックが必要な場合は、代わりにredirectToメソッドを定義することができ

protected function redirectTo() { // }

redirectTo財産の

だから私は

protected function redirectTo() 
{ 
    if (\Auth::user()->isAdmin()) { 
     return '/dashboard'; 
    } else { 
     return '/home'; 
    } 
} 

それを定義した。しかし、あなたが推測することとして、それは動作しません。常に/homeにリダイレクトされます。ソースを通って行く

は、私はこの

namespace Illuminate\Foundation\Auth; 

trait AuthenticatesUsers 
{ 
    ... 

    /** 
    * Send the response after the user was authenticated. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @return \Illuminate\Http\Response 
    */ 
    protected function sendLoginResponse(Request $request) 
    { 
     $request->session()->regenerate(); 

     $this->clearLoginAttempts($request); 

     return $this->authenticated($request, $this->guard()->user()) 
       ?: redirect()->intended($this->redirectPath()); 
    } 
    ... 
} 

を発見し、これはredirectTo方法をチェックところ、私は見つけることができません$this->redirectPath()

namespace Illuminate\Foundation\Auth; 

trait RedirectsUsers 
{ 
    /** 
    * Get the post register/login redirect path. 
    * 
    * @return string 
    */ 
    public function redirectPath() 
    { 
     return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home'; 
    } 
} 

の実装です。

私はLaravel 5.3.28、BTWを使用しています。

提案がありますか?

EDIT

私は5.3.29にあったのに対し、これは、5.3.29で修正されました。それでも私はそれを助けることはできませんが、ドキュメントに何か問題があると思うか、またはlaravelがLaravelプロジェクトを作成するために作成したヘルパーです。私はプロジェクトを生成するためにそれを使っていましたが、最新バージョンではありませんでした。 5.3では

答えて

3

オーバーライドauthenticated()機能:

protected function authenticated($request,$user) 
    { 
     if(\Auth::user()->isAdmin()){ 
      return redirect()->intended('dashboard'); 
     } 

     return redirect()->intended('/home'); 
    } 
+0

私はそこに空の機能を気付かなかった、ありがとう。 – vfsoraki

+0

@vfsorakiそれは 'AuthenticateUsers'特性とここに ' return $ this-> authenticated($ request、$ this-> guard() - > user()) ?:redirect() > redirectPath()); '空の関数はどういう意味ですか? –

+0

私はそれが空の関数として実装されたことを意味しました。重要なことは何もない :) – vfsoraki

1

ログイン後にカスタムページにユーザーをリダイレクトするLoginControllersendLoginResponse()を上書きすることができます。代わりに

return redirect('/'); 
+0

をアクションを変更します。私はドキュメントには達成できないことが言及されているのですか? – vfsoraki

+0

Laravelの新しいバージョンのドキュメントは、しばしば古いバージョンから貼り付けられたコピーですが、フレームワーク自体は常に変化しています。 'redirectTo'プロパティは5.2以降私のためには動作しません。 –

+0

残念です。あなたは公式の文書に頼ることはできません! – vfsoraki

0

多分これは

protected $redirectTo = '/account'; 

    protected function redirectTo() 
    { 
     if (! empty(config('locales.locale_prefix'))) { 

      return $this->redirectTo = config('locales.locale_prefix') .'/account'; 
     } 

     return $this->redirectTo; 
    } 

を支援し、また、これはかなり明白である形で

<form class="form-horizontal" role="form" method="POST" action="{{ url(config('locales.locale_prefix'), 'login') }}"> 
関連する問題