laravel - laravel 处理已验证和未验证路由的最佳方法
问题描述
让经过身份验证和未经身份验证的用户同时使用路由的最佳方式是什么?我解释说我需要一个路由来修改它的响应,以防经过身份验证和未经过身份验证的用户。现在我有一个这样的 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 错误,则此中间件会在令牌错误的情况下返回错误。如果找不到用户,我是否需要另一个用于身份验证/非身份验证路由的中间件,或者只是不返回 setFailResponse 并在路由中处理它?
解决方案
推荐阅读
- javascript - react js - Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
- java - null org.bukkit.command.CommandException 错误(Spigot)
- ffmpeg - 音频转换失败问题 Discord.py
- output - (wx)Maxima:返回表达式使用 `sec` `csc` 和 `cot` 而不是倒数?
- typescript - 定义 TypeScript 回调类型并提供默认回调值
- python - 如何将包含多行的单元格的数据框行转换为单独的列
- excel - 您可以在 Excel 中创建自定义错误类型吗?
- python - 我得到“TypeError:列表索引必须是整数或切片,而不是 str”。我如何解决它?
- mysql - 无法读取未定义的属性“getAllProducts”
- r - 对新数据使用预测时出错 - 因子具有新水平