1

使用 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 保护。

  1. Auth::shouldUse('api');在句柄函数中创建一个新的中间件。
  2. 将中间件分配给内核中的 api 部分。

Laravel 现在将对所有 API 请求使用 api 保护。像这样的调用$this->authorize('view', $model)将在 web 和 api 中工作。

4

2 回答 2

2

更新:得到它的工作。

似乎即使对于 API 调用,Laravel 仍在使用来自 web 警卫的用户来检查策略。此用户未定义 API 调用。所以我需要告诉 Laravel 所有的 API 调用都应该使用 api 保护。

Auth::shouldUse('api');在句柄函数中创建一个新的中间件。将中间件分配给内核中的 api 部分。Laravel 现在将对所有 API 请求使用 api 保护。像这样的调用$this->authorize('view', $model)将在 web 和 api 中工作。

于 2017-01-23T05:57:41.800 回答
0

只需将auth:api中间件用于带有策略的路由

于 2017-09-28T07:42:23.997 回答