让路由同时适用于经过身份验证和未经身份验证的用户的最佳方法是什么? 我解释说我需要一个路由,在经过身份验证和未经身份验证的用户的情况下修改其响应。现在我有一个像这样的 jwt 中间件:
<?php
namespace App\Http\Middleware;
use Closure;
use JWTAuth;
use Exception;
use Illuminate\Http\Request;
use App\Utils\CustomResponse;
use Symfony\Component\HttpFoundation\Response;
use Tymon\JWTAuth\Exceptions\TokenInvalidException;
class JwtMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function verifyToken(Request $request, Closure $next)
{
try {
$user = JWTAuth::parseToken()->authenticate();
} catch (Exception $e) {
if ($e instanceof TokenInvalidException) {
return CustomResponse::setFailResponse("invalid token", Response::HTTP_NOT_ACCEPTABLE);
}else if($e instanceof TokenExpiredException){
return CustomResponse::setFailResponse("expired token", Response::HTTP_NOT_ACCEPTABLE);
}else {
return CustomResponse::setFailResponse("token not found",Response::HTTP_NOT_FOUND);
}
}
return $next($request);
}
}
现在,如果我将此中间件应用到我的路由中,它会在错误令牌的情况下返回错误并给出 404 错误。我是否需要另一个用于 auth/not auth 路由的中间件,或者如果没有找到用户,则不返回 setFailResponse 并在路由中处理它?</p>