php - Laravel 5.2 Auth facade 和 Auth::guard($guard)

标签 php laravel authentication

我是 Laravel 的新手。我正在浏览默认的身份验证中间件,我看到它正在使用:

Auth::guard($guard)->guest()

检查用户是否是访客。

文档位于 https://laravel.com/docs/5.2/authentication#retrieving-the-authenticated-user告诉我们可以使用:

Auth::check()

确定用户是否通过身份验证。 (我想这与 guest() 相反?

我尝试更改要使用的默认代码

Auth::guest()

我得到了完全相同的结果。

我的问题是,在这种情况下,有没有 guard($guard)-> 有什么区别?

一个相关的问题。 guest() 是否与 check() 完全相反,或者在某些情况下它们可能会返回相同的结果?

谢谢!

最佳答案

authenticate 中间件允许您指定要使用的 auth guard 类型。 Laravel 5.2 自带两个开箱即用的工具,'web''api'

如果未指定,Auth facade 默认使用 'web' 守卫。因此,例如:Auth::user() 默认执行此操作:Auth::guard('web')->user()

开箱即用的另一个身份验证驱动程序称为 'api'。例如,您可以这样调用您的中间件:$this->middleware('auth:api');

这将检查用户是否通过 api_token 而不是 session 进行了身份验证。然后你可以通过 Auth::guard('api')->user() 而不是 Auth::user() 获取用户的实例,这是相同的作为 Auth::guard('web')->user()

如果您的应用程序具有仅允许登录用户使用的 API 端点,您将使用它。然后用户可以发出像 yourapp.com/api-method?api_token=blahblah 这样的请求。然后您可以使用“api”auth guard 来验证并获取已登录的用户。

我发现本教程对于设置它非常有用:http://learninglaravel.net/multiple-authentication-guard-drivers-including-api-in-laravel-52

然后回答你的第二个问题。是的,guest() 与 check() 正好相反。查看 laravel\framework\src\Illuminate\Auth\GuardHelpers.php

关于php - Laravel 5.2 Auth facade 和 Auth::guard($guard),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37171269/

相关文章:

javascript - 虽然 Ajax 多次提交但表单已提交

php - 警告 : array_values() expects parameter 1 to be array, 给出 null

authentication - 如何将外键列添加到 AspNetUserRoles 表 Owin 身份验证

php - Laravel mysql 内连接并从另一个表中选择特定字段

laravel - 如何在 Laravel 动态路由中使用 str_replace

php - Laravel 4.2 Composer 安装错误 : "could not scan for classes"

php - 如何防止 Laravel API 处理查询字符串上的参数?

python - 在发出 HTTP 请求时在 python 中保持 session

java - 从命令行使用 curl 时 session 死亡

php - 如何通过他们的 API 获取 UPS Delivery Progress?