我正在使用Laravel Passport 3进行身份验证,在Laravel 5.4中构建API。我的所有API方法都返回一组始终返回的值,success
,errors
(如果有任何错误)等。
我已经改变了\Illuminate\Auth\AuthenticationException
投掷的响应,以适应我的应用程序的其余部分,但是我不知道如何更改各种令牌授权响应的响应,而不会做像编辑这样糟糕的事情供应商文件。
答案 0 :(得分:2)
图书馆不支持您在此处尝试做的事情,因此无论您做什么都会很糟糕,并且可能会破坏与laravel/passport
未来版本的兼容性。
在我看来,你只能在这两个选项中进行选择:
您可以声明等效路线到自定义方法,而不是声明护照路线(Passport::routes()
)。这些方法在内部调用Passport类和方法,在将它们返回给用户之前处理护照返回值。它需要大量挖掘护照代码,但同时,如果您只添加一些字段(success
或error
),您应该能够在更新时更新代码而无需太多工作库。
分叉laravel/passport
并根据您的需要进行修改。这个解决方案并不像第一个那样凌乱,但未来合并新版护照可能会很难。
当然,两者都不是很好的解决方案。保持标准护照回复或使用更合适的图书馆是更好的选择:我认为如果你要求它们是不可行的。
答案 1 :(得分:2)
我认为您可以使用中间件来更改您的响应。
来自laravel文档:
之前&在中间件之后
中间件是在之前还是之后运行 请求取决于中间件本身。
您可以捕获响应并重新格式化响应。
您可以使用laravel的setContent
方法来设置响应内容。 Check here
答案 2 :(得分:-1)
另一种方法 - 为您的目的创建代理路由。
Route::post('custom-auth/token', function (Request $request) {
$proxy = Request::create('oauth/token', 'POST', $request->request->input());
$response = app()->handle($proxy);
return responseCallback($response);
});
responseCallback
您的自定义响应修改器功能。