首页 > 解决方案 > 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 并在路由中处理它?

标签: laravel

解决方案


推荐阅读