我想在登录我的网站时执行自定义重定向逻辑。所以我写了这段代码
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变量不会在这里工作。因此,在简单登录用户的情况下,为了在我们的数据库中对用户进行授权,然后将它们登录,会有什么用呢?
答案 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();
虽然我没有像那样使用它。