和#34;登录"有什么区别?和"尝试" Auth。中的方法

时间:2017-06-16 08:21:39

标签: laravel authentication login laravel-5.4

我正在学习Laravel 5.4并自定义并制作我原来的Auth功能。

以下是我的"认证"方法

public function authenticate(Request $request)
{
    $remember_me = (Input::has('remember')) ? true : false;
    Auth::guard('web');
    $this->validateLogin($request);
    $credentials = array(
        'username' => trim($request->input('username')),
        'password' => trim($request->input('password'))
    );
    if(Auth::attempt($credentials, $remember_me)){
        $user = Auth::guard('web')->user();
        Auth::guard('web')->login($user, $remember_me);
        return redirect()->route('mypage');
    }
    return redirect()->back();
}

我对$ remember_me参数中有关上述尝试和登录方法的部分提出了疑问。

他们之间有什么区别?

当我看到文档时,它说的类似于,如果你想让#34;记住我"令牌,您可以设置关于它们的第二个布尔参数。

1 个答案:

答案 0 :(得分:6)

如果登录凭据正确,

attempt($credentials, $remember_me)将尝试登录用户。如果不是,则表示用户未登录。此方法返回布尔值,以便您检查是否成功。

login($user_id, $remember_me)会将用户登录,而不会检查任何凭据。

记住我指定用户登录是否应该跨浏览器会话保持不需要重新验证。

在您的示例中,我看到您login(...)内的来电attempt(...)。不应该这样做。您可以删除login(...)行。

示例:

if(Auth::attempt($credentials, $remember_me)){
    return redirect()->route('mypage');
}