laravel - Auth中 "login"和 "attempt"方法有什么区别

标签 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 参数中关于上述尝试和登录方法的部分有疑问。

它们之间有什么区别?

当我看到文档时,它说类似于,如果你想制作“记住我”标记,你可以设置关于它们的第二个 bool 参数。

最佳答案

如果登录凭据正确,attempt($credentials, $remember_me) 将尝试登录用户。如果不是,则用户未登录。此方法返回一个 bool 值,以便您可以检查是否成功。
login($user_id, $remember_me) 将用户登录,而不检查任何凭据。

记住我指定用户登录是否应该在浏览器 session 中持续存在而无需重新验证。

在您的示例中,我看到您在 login(...) 中调用了 attempt(...) 。这不应该被需要。您可以删除 login(...) 行。

例子:

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

关于laravel - Auth中 "login"和 "attempt"方法有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44584335/

相关文章:

algorithm - 穷人的认证算法?

javascript - 未经授权的 AJAX 请求返回状态代码 200 而不是 401

php - Laravel Excel,从模型导出,样式问题

php - SQL:使用计数查询返回 1

rest - 代理 K8S 应用程序委托(delegate)对来自其他 pod 的请求进行身份验证

php - php登录表单验证问题

security - 如何检测登录是否可疑?

php - 在网站上使用Facebook登录并获取用户ID

php - 如何对 Laravel Eloquent ORM 对象进行排序?

laravel - 如何统计当年每个月的文章数?