【发布时间】:2023-03-11 03:22:01
【问题描述】:
我是 laravel 和 laravel-passport 的新手,我在媒体 here 上关注这篇文章
一切都如我所愿,直到我尝试处理错误,如果用户在详细信息方法中发送了错误的授权令牌
这是错误:
无效参数异常
Route [login] 未定义。
我正在使用最新的 laravel 5.7 和护照 7.1
我试过了
第一个 sn-p
- 尝试捕捉显示方法中的错误
第二个sn-p
- 处理/app/exceptions/handler.php中的token不匹配异常 我猜这不是令牌不匹配异常
第三个sn-p
- 甚至在 Handler.php 文件中错过了一点 laravel 核心
在未经身份验证的方法中但没有希望
/routes/api.php
Route::get('user/login', 'AuthController@login');
// user
Route::get('users/find', 'UserController@index');
//here i am trying this route
//with wrong authorization tocken
Route::middleware('auth:api')->group(function () {
Route::get('user', 'UserController@show');
});
Route::post('user', 'UserController@store');
Route::put('user/{id}', 'UserController@update');
Route::delete('user/{id}', 'UserController@destroy');
/UserController.php
public function show()
{
if(Auth::check()){
$user = auth()->user();
return response()->json(['user'=>auth()->user()], 200);
}else{
return response()->json("can't connect", 400);
}
}
第一个片段 公共函数显示() {
try {
$user = auth()->user();
} catch (\Throwable $th) {
return response()->json("can't connect", 400);
}
return response()->json(['user'=>auth()->user()], 200);
}
第二个片段 /app/exceptions/handler.php
public function render($request, Exception $exception)
{
if ($exception instanceof TokenMismatchException) {
return "Token error";
}
return parent::render($request, $exception);
}
第三个片段
\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php
protected function unauthenticated($request, AuthenticationException $exception)
{
return $request->expectsJson()
? response()->json(['message' => $exception->getMessage()], 401)
: redirect()->guest($exception->redirectTo() ?? route('login'));
}
错误片段(可能有用)
public function route($name, $parameters = [], $absolute = true)
{
if (! is_null($route = $this->routes->getByName($name))) {
return $this->toRoute($route, $parameters, $absolute);
}
// the following line is highlighted
throw new InvalidArgumentException("Route [{$name}] not defined.");
}
我希望返回的是 json 而不是这个错误模板
因为你可能发现我正在尝试构建一个宁静的 API
【问题讨论】:
标签: php laravel token laravel-passport