在Laravel 5.3中创建自定义重定向逻辑;无法登录用户

时间:2017-01-10 23:43:42

标签: php laravel

我想在登录我的网站时执行自定义重定向逻辑。所以我写了这段代码

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('RedirectController@client');
    }
    else {
        //dd($rfid);
        return redirect()->action('RedirectController@employee');
    }
}

但是我的问题是它所做的一切都是重定向。这是有道理的。我在那里的代码只管理重定向,没有任何东西可以实际记录任何人。所以我做了一些研究,发现

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

作为记录用户的一种方式。但是我不知道将变量$ user定义为什么。我知道这应该可行,因为我在我的网站上的不同位置使用它,但我在那里使用的$ user变量不会在这里工作。因此,在简单登录用户的情况下,为了在我们的数据库中对用户进行授权,然后将它们登录,会有什么用呢?

1 个答案:

答案 0 :(得分:0)

如果您查看Laravel 5.3 AuthenticatesUsers特征,您将了解登录在幕后的工作原理。

您需要更改login方法以使用attempt代替login,如下所示。

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('RedirectController@client');
 }
 else {
     //dd($rfid);
     return redirect()->action('RedirectController@employee');
 }}

我建议你像我提到的那样使用它。如果您仍想获得$user价值,可以尝试

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

虽然我没有像那样使用它。