Confluence 에 심각한 보안 취약점이 발견되었으니 사용자분들은 업그레이드 하세요.!
 
1
0
-1

안녕하세요 laravel7 공부를 시작하고 있는 초보 개발자 입니다


다름이 아니라 77페이지 부터 미들웨어 관련 실습을 하고 있는 와중에 에러가 발생하여 진척이 안되고 있습니다 ㅜ

77페이지에 있는 web.php를 수정 후


Route::get('protected', ['middleware'=> 'auth'function (){
    //if 절은 삭제한다.
}] );



vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php 수정

 /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string[]  ...$guards
     * @return mixed
     *
     * @throws \Illuminate\Auth\AuthenticationException
     */
    public function handle($requestClosure $next, $guard = null)
    {
        
        if (Auth::guard($guard)->guest()) {
            if ($request->ajax() || $request->wantsJson()) {
                return response('Unauthorized.'401);
            } else {
                return redirect()->guest('login');
            }
        } 



        return $next($request);
    }



app/Http/Kernel.php 수정

 protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
    ];



을 한 상태입니다.

그 후 79페이지에 있는 php artisan make:auth를 실행하였지만 laravel 버전이 7버전이상이라 적용이 안되어

composer require laravel/ui ^2.0 실행

npm install

npm run dev 까지 실행하였습니다.

 그후 localhost:8000/auth/login으로 접속 시 아래와 같은 에러가 나타나고 있습니다.

Error

Non-static method Illuminate\Contracts\Auth\Factory::guard() cannot be called statically


혹시 몰라 쿠키 캐시도 삭제하고 시크릿모드로도 접속해 보았지만 같은 에러가 나타고 있습니다

도움 부탁드립니다


  1. 현재 guard()값을 null로 보고 있어서 그런것인가요?
  2. php artisan make:auth는 라라벨7버전에서 작동안하는게 제가 찾아본 게 맞는지 궁금합니다
  3. 감사합니다



감사합니다



.


    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php 수정

       /**
           * Handle an incoming request.
           *
           * @param  \Illuminate\Http\Request  $request
           * @param  \Closure  $next
           * @param  string[]  ...$guards
           * @return mixed
           *
           * @throws \Illuminate\Auth\AuthenticationException
           */
          public function handle($requestClosure $next, $guard = null)
          {
              
              if (Auth::guard($guard)->guest()) {
                  if ($request->ajax() || $request->wantsJson()) {
                      return response('Unauthorized.'401);
                  } else {
                      return redirect()->guest('login');
                  }
              } 



              return $next($request);
          }


      에서 


       if (Auth::guard($guard)->guest()) { 부분을

      if (auth()->guest()) { 바꾸니까 로그인이 되어 localhost:8000/home으로 정상적으로 들어가고 있습니다


      아마 laravel7에서는 Auth::guard($guard)->guest()을 인식 못하는 것 같습니다.

        CommentAdd your comment...
      1.  
        1
        0
        -1

        routes/web.php에 

        Route::get('protected', ['middleware'=> 'auth'function (){
            //if 절은 삭제한다.
        }] );

        만 남겨놓고 다 지워야 하는 건가요 그래도 같은 에러가 나타나고 있습니다

          CommentAdd your comment...