代码之家  ›  专栏  ›  技术社区  ›  panthro

如果是客人,不要重定向?

  •  1
  • panthro  · 技术社区  · 4 年前

    有没有办法使用 guest 如果 request->expectsJson() 它不会重定向,只是错误?(比如auth中间件)。

    或者我需要编写自定义中间件吗?

    0 回复  |  直到 4 年前
        1
  •  1
  •   Clément Baconnier    4 年前

    您可以根据 RedirectIfAuthenticated :

    app/Http/Middleware/fauthenticated。php

    <?php
    
    namespace App\Http\Middleware;
    
    
    use App\Providers\RouteServiceProvider;
    use Closure;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Auth;
    
    class AbortIfAuthenticated
    {
    
        public function handle(Request $request, Closure $next, ...$guards)
        {
            $guards = empty($guards) ? [null] : $guards;
    
            foreach ($guards as $guard) {
                if (Auth::guard($guard)->check()) {
                    abort(403, "Not allowed");
                }
            }
    
            return $next($request);
        }
    }
    
    

    然后用自己的插件替换中间件 app/Http/Kernel。php (或添加一个新的)

    protected $routeMiddleware = [
        ...
        'guest' => \App\Http\Middleware\AbortIfAuthenticated::class,
        ...
    ];