web-dev-qa-db-ja.com

ハンドラクラスのエラー-Laravel

Laravel= 5.5を使用して、ユーザーと管理者にマルチ認証を実装しようとしています。ブラウザで管理者ログインフォームを呼び出そうとすると、このエラーが発生します。

エラー:

App\Exceptions\Handler :: unauthenticated($ request、App\Exceptions\AuthenticationException $ exception)の宣言は、Illuminate\Foundation\Exceptions\Handler :: unauthenticated($ request、Illuminate\Auth\AuthenticationException $ exception)と互換性がある必要があります

これがapp/Exceptions/Handlerの私の未認証の関数です。

 protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }
        $guard = array_get($exception->guards(), 0);
        switch ($guard) {
            case 'admin':
                $login = 'admin.login';
                break;
            default:
                $login = 'login';
                break;
        }
        return redirect()->guest(route($login));
    }

この問題の解決を手伝ってください。

11
MA-2016

追加するのを忘れたuse Illuminate\Auth\AuthenticationExceptionファイルの上部

24
Nerea

私はLaravel 7.Xを使用しています
そして、Authenticateミドルウェアでそれを行うことを好みます
私は怒鳴るようにそれをしました、そしてそれは私にとってうまくいきます。

namespace App\Http\Middleware;

use Closure;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Support\Arr;

class Authenticate extends Middleware
{
    protected $guards = [];
     /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @param  string[] ...$guards
     * @return mixed
     *
     * @throws \Illuminate\Auth\AuthenticationException
     */
    public function handle($request, Closure $next, ...$guards)
    {
        $this->guards = $guards;

        return parent::handle($request, $next, ...$guards);
    }
    /**
     * Get the path the user should be redirected to when they are not authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string|null
     */
    protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            if (Arr::first($this->guards) === 'admin') {
                return route('admin.login');
            }
            return route('trainee.login');
        }

    }

}
0
Thanh Nguyen