2017-01-10 7 views
0

私は自分のサイトにログインする際にカスタムリダイレクトロジックを使いたいと思っていました。だから私はこのコードを書いたLaravel 5.3でカスタムリダイレクトロジックを作成する。

public function login() 
{ 
    $user = //what do I put here? 
    $this->guard()->login($user); 
    $id = Auth::id(); 
    //dd($id); 
    $rfid = DB::table('users')->where('id', $id)->value('reference_id'); 
    if ($rfid == null){ 
     dd($id); 
     return redirect()->action('[email protected]'); 
    } 
    else { 
     //dd($rfid); 
     return redirect()->action('[email protected]'); 
    } 
} 

しかし、私の問題はすべてリダイレクトされているということです。どちらが理にかなっている。私が持っているコードのみリダイレクトを管理し、実際に誰をログに記録するが何もありません。だから私は、しかし、私は何を知っていないいくつかの再探索をしたとしてユーザーをログインする方法として

$this->guard()->login($user); 

を見つけました。変数$ userを次のように定義します。私は私のサイトの別の場所でそれを使用するので、これがうまくいくはずですが、ここで使用する$ user変数はここでは動作しません。だから、単にユーザーのログインのシナリオでは、私たちのデータベースのようにユーザーを認証するために何を入れてからログインするのですか?

答えて

0

Laravel 5.3 AuthenticatesUsersの特性を見ると、ログインがどのようにシーンの背後にあるかを理解できます。

loginメソッドをloginの代わりにattemptの代わりに使用するように変更する必要があります。

public function login(Request $request) 
{ 
$user = //what do I put here? 
$this->guard()->attempt($this->credentials($request), $request->has('remember')); 
$id = Auth::id(); 
//dd($id); 
$rfid = DB::table('users')->where('id', $id)->value('reference_id'); 
if ($rfid == null){ 
    dd($id); 
    return redirect()->action('[email protected]'); 
} 
else { 
    //dd($rfid); 
    return redirect()->action('[email protected]'); 
}} 

私が言及したように使用することをお勧めします。それでも$user値を取得したい場合は、私はそのようにそれを使用していないけれども、あなたは

$user = $this->guard()->user(); 

を試してみることができます。

+0

私はそれを行っていきます。私もこのhttp://stackoverflow.com/questions/39532803/laravel-5-3-custom-path-for-post-authentication-redirectを見つけ、私のコードを以下のように変更しました。 https://gyazo.com/e6446cc3fc81a0fbe54cdda82c9461f3 私は今のところ私が知っている限り動作するか、上記の方法を使用することを提案しますか? – Albure

+0

私は個人的には、コアフレームワークメソッドからあまりにも多くをそんなに必要とするまで迂回させたくありません。カスタマイズを含めるメソッドをオーバーライドするとよい方法です。 –

+0

あなたは上記のものを持っていますか? – Albure

関連する問題