질문을 삭제하지 말아주세요.!
 
1
0
-1

안녕하세요 라라벨 막 입문하기 시작한 초보 개발자입니다.

 

지금 회원가입 및 로그인 인증 페이지를 실습하는 도중에 궁금한 점이 생겨 여쭤봅니다.

 

실습하는 사이트 : https://laravel.kr/docs/5.3/authentication#introduction-database-considerations

 

본문에 나오는 App\Http\Controllers\Auth\AuthController 이 파일은 왜 저한테는 없는지 잘 모르겠으나

 

그냥 무시하고 php artisan make:auth 를 실행하였고

 

파일들이 다 생성되었습니다.

 

근데 localhost:8000/home 으로 들어가면 왜 /login 페이지로 넘어가는지

 

어떤 구조인지 도저히 모르겠습니다.

 

도움 부탁드립니다...

    CommentAdd your comment...

    2 answers

    1.  
      2
      1
      0

      make:auth 명령으로 새로 만들어진 라우팅을 확인해 주세요. 핵심은 auth 라는 미들웨어입니다. /home 을 방문하면 등록된 auth 미들웨어가 작동합니다.

       

      $ php artisan route:list
      +----------+------+-----------------------+--------------+
      | Method   | URI  | Action                | Middleware   |
      +----------+------+-----------------------+--------------+
      | GET|HEAD | home | HomeController@index  | web,auth     |
      +----------+------+-----------------------+--------------+

       

      미들웨어는 여기에 등록되어 있습니다.

      https://github.com/laravel/laravel/blob/master/app/Http/Kernel.php#L49

       

      다음의 handle 메서드가 작동합니다.

      https://github.com/laravel/framework/blob/5.3/src/Illuminate/Auth/Middleware/Authenticate.php#L39

       

      로그인이 안되어 있으면 예외를 던집니다 (로그인 체크는 쿠키와 세션을 이용합니다).

      https://github.com/laravel/framework/blob/5.3/src/Illuminate/Auth/Middleware/Authenticate.php#L66

       

      예외는 이곳에서 핸들링합니다. 즉 /login 라우트로 강제 리디렉션합니다.

      https://github.com/laravel/laravel/blob/master/app/Exceptions/Handler.php#L57

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

        저도 이 부분에서 막혔는데... ㅠㅠ

        저자님이 책 쓰실데랑 버전이 좀 바뀐것 같아요...

         

        myapp\app\Exceptions\Handler.php 

         

        63 라인 보시면...

        return redirect()→guest('login'); → 이 부분을

        return redirect()→guest('auth/login'); →   저는 이렇게 수정해서 테스트해보고

        진도 나가고 있습니다.. ^^;;

         

        아마 의존성 문제로...

        기존에 vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php 에서

        하드코딩 되어있던 부분이..

        예외를 던져주고, 그걸 외부에서 예외처리 핸들러로 처리하게끔...

        바뀐것 같아요.. 

         

         

         

         

        1. 김주원

          수수나무 이 라인 말씀이시군요. 

          https://github.com/appkr/l5code/blob/e8b8373bdb0e736c415c2254dab21531417693e7/app/Exceptions/Handler.php#L63

           

          예 정확히 짚으셨구요. 맞습니다.

          • 책에서 로그인을 위해 사용하는 라우트는 auth/login 인데 반해
          • auth 미들웨어를 적용했을 때, 이 미들웨어가 로그인 안된 사용자를 리디렉션하는 라우트는 login 입니다.
          • 78페이지 중반 쯤에 라라벨 내장 auth 미들웨어가 리디렉션하려는 로그인 페이지와 우리가 만든 로그인 페이지의 라우팅이 달라 발생하는 문제와 해결법에 대해 설명하고 있습니다.
          • 최종 코드를 보시면 로그인 페이지에 대한 리디렉션 라우트를 원하는대로 정의할 수 있도록 route() 함수를 쓰고 있습니다.

          이후에 또 막히는 내용 있으면 질문 남겨 주세요. 고맙습니다.

        CommentAdd your comment...