前面写过给只用帐户密码登录的写个中转的路由,实际使用过程中发现个问题,如果用户认证失败,应该返回个json,说明哪方面的原因失败。可实际返回的是GuzzleHttp的异常信息,一大串,不好看,而且还暴露了些不该出现的信息。
所以修改了一下。
Route::post('/auth/password', function (\Illuminate\Http\Request $request){ $http = new \GuzzleHttp\Client(); try { $response = $http->post(url('/oauth/token'), [ 'form_params' => [ 'grant_type' => env('OAUTH_GRANT_TYPE_PASSWORD'), 'client_id' => env('OAUTH_CLIENT_ID_PASSWORD'), 'client_secret' => env('OAUTH_CLIENT_SECRET_PASSWORD'), 'scope' => env('OAUTH_SCOPE_PASSWORD'), 'username' => $request->input('username'), 'password' => $request->input('password'), ], ]); return json_decode((string)$response->getBody()->getContents(), true); } catch (RequestException $e) { if ($e->hasResponse()) { return $e->getResponse(); } $code = $e->getCode(); $message = 'ERROR:'; $message .= $code; return response()->json([ 'code' => 200, // or $code 'message' => $message ], 200 /* or $code */); } });
有好事者可以继续研究下如何在异常时展示更清楚的内容。
-完-