使用自有API(带Passport)的Laravel 5.3 web应用的授权策略/关卡

使用自有API(带Passport)的Laravel 5.3 web应用的授权策略/关卡,laravel,api,laravel-passport,policies,Laravel,Api,Laravel Passport,Policies,使用Laravel5.3,我建立了一个使用自己API的web应用程序。Passport已成功处理身份验证。Web app在路由和模型策略中使用auth中间件进行授权。API路由使用默认的“auth:API”令牌保护来控制访问 我想在应用程序/策略中使用相同的策略进行API授权以及web身份验证,但我不明白如何使用。诸如$this->authorize('view',$model)之类的调用不起作用。我想我需要以某种方式将用户从Auth::guard('api')->user()传递到策略 任何帮

使用Laravel5.3,我建立了一个使用自己API的web应用程序。Passport已成功处理身份验证。Web app在路由和模型策略中使用auth中间件进行授权。API路由使用默认的“auth:API”令牌保护来控制访问

我想在应用程序/策略中使用相同的策略进行API授权以及web身份验证,但我不明白如何使用。诸如
$this->authorize('view',$model)
之类的调用不起作用。我想我需要以某种方式将用户从
Auth::guard('api')->user()传递到策略

任何帮助都将不胜感激

更新:让它工作

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

  • 使用
    Auth::shouldUse('api')创建一个新的中间件在句柄函数中
  • 将中间件分配给内核中的api部分

  • Laravel现在将对所有api请求使用api guard。像
    $this->authorize('view',$model)
    这样的调用在web和api中都可以使用。

    更新:可以使用了

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

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

    只需使用
    auth:api
    中间件就可以处理带有策略的路由。

    您的回购协议不会在任何地方公开,是吗?我遵守了您的指示,但我在Passport和Model策略方面仍有问题。抱歉,我的项目被搁置,但将在接下来的几个月内迁移到laravel 5.5,然后发布。不确定这是否需要对身份验证进行任何更改?可能有一个样板文件或软件包有更好的5.4/5.5示例,我在这里也有同样的问题,无法让它工作-即使是新安装。这项政策甚至没有被调用。