更改 Laravel Passport/OAuth-Server 响应
Changing The Laravel Passport/OAuth-Server Responses
我正在 Laravel 5.4 中构建 API,使用 Laravel Passport 3 进行身份验证。我所有的 API 方法 return 一组值总是 returned,success
,errors
(如果有任何错误)等
我已经更改了 \Illuminate\Auth\AuthenticationException
throws 的响应,以适应我的应用程序的其余部分,但是我不确定如何更改各种令牌授予响应的响应,而不做一些可怕的事情比如编辑供应商文件。
库不支持您在此处尝试执行的操作,因此无论您做什么都是 hacky,并且可能会破坏与 laravel/passport
.
未来版本的兼容性
在我看来,您只能在这两个选项中进行选择:
您可以声明与您的自定义方法等效的路由,而不是声明护照路由 (Passport::routes()
)。这些方法在内部调用 Passport 类 和方法,在将它们返回给用户之前处理护照返回值。它需要深入挖掘护照代码,但与此同时,如果您只添加一些字段(success
或 error
),您应该能够在更新图书馆.
派生 laravel/passport
并根据您的需要进行修改。这个解决方案不像第一个那样混乱,但将来与新版本的护照合并可能会很困难。
当然,两者都不是很好的解决方案。保留标准的护照回复或使用更合适的库是更好的选择:如果你问的话,我认为它们是不可行的。
我想你可以使用中间件来改变你的反应。
来自 laravel 文档:
Before & After Middleware
Whether a middleware runs before or after a
request depends on the middleware itself.
您可以捕获响应并重新格式化响应。
您可以使用laravel的setContent
方法来设置响应的内容。 Check here.
另一种方式 - 根据您的目的创建代理路由。
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
您的自定义响应修饰符函数。
我正在 Laravel 5.4 中构建 API,使用 Laravel Passport 3 进行身份验证。我所有的 API 方法 return 一组值总是 returned,success
,errors
(如果有任何错误)等
我已经更改了 \Illuminate\Auth\AuthenticationException
throws 的响应,以适应我的应用程序的其余部分,但是我不确定如何更改各种令牌授予响应的响应,而不做一些可怕的事情比如编辑供应商文件。
库不支持您在此处尝试执行的操作,因此无论您做什么都是 hacky,并且可能会破坏与 laravel/passport
.
在我看来,您只能在这两个选项中进行选择:
您可以声明与您的自定义方法等效的路由,而不是声明护照路由 (
Passport::routes()
)。这些方法在内部调用 Passport 类 和方法,在将它们返回给用户之前处理护照返回值。它需要深入挖掘护照代码,但与此同时,如果您只添加一些字段(success
或error
),您应该能够在更新图书馆.派生
laravel/passport
并根据您的需要进行修改。这个解决方案不像第一个那样混乱,但将来与新版本的护照合并可能会很困难。
当然,两者都不是很好的解决方案。保留标准的护照回复或使用更合适的库是更好的选择:如果你问的话,我认为它们是不可行的。
我想你可以使用中间件来改变你的反应。
来自 laravel 文档:
Before & After Middleware
Whether a middleware runs before or after a request depends on the middleware itself.
您可以捕获响应并重新格式化响应。
您可以使用laravel的setContent
方法来设置响应的内容。 Check here.
另一种方式 - 根据您的目的创建代理路由。
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
您的自定义响应修饰符函数。