使用 Laravel 5.3,我设置了一个使用自己的 API 的网络应用程序。Passport 已成功处理身份验证。Web 应用在路由和模型策略中使用 auth 中间件进行授权。API 路由使用默认的 'auth:api' 令牌保护来控制访问。
我想在应用程序/策略中使用相同的策略来进行 API 授权以及网络身份验证,但我不明白如何。诸如$this->authorize('view', $model)
不工作的电话。我想我需要以Auth::guard('api')->user()
某种方式将用户传递给策略?
任何帮助,将不胜感激!
更新:得到它的工作。
似乎即使对于 API 调用,Laravel 仍在使用来自 web 警卫的用户来检查策略。此用户未定义 API 调用。所以我需要告诉 Laravel 所有的 API 调用都应该使用 api 保护。
Auth::shouldUse('api');
在句柄函数中创建一个新的中间件。- 将中间件分配给内核中的 api 部分。
Laravel 现在将对所有 API 请求使用 api 保护。像这样的调用$this->authorize('view', $model)
将在 web 和 api 中工作。