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

로그인 할때 사용자 인증 후 응답을 보내주잖아요.

AuthenticatesUsers.php 를 보면 사용자 인증 후 응답에 대한 리턴값으로 아래 메서드를 줍니다.


protected function sendLoginResponse(Request $request)
{
$request->session()->regenerate(); // 요청자에 대한 새로운 세션 생성

$this->clearLoginAttempts($request); // 로그인실패 횟수 클리어

return $this->authenticated($request, $this->guard()->user())
?: redirect()->intended($this->redirectPath());
}
여기서 마지막 리턴이 이해가 잘 안되는데요.
$this->authenticated($request$this->guard()->user())  값이 있으면 이거를 리턴하고
값이 없으면 
redirect()->intended($this->redirectPath()) 를 리턴하라 같은데 맞나요?
$this->authenticated() 는 어디에서 가져오는지도 궁금합니다. AuthenticatesUsers.php 에 메서드가 있긴한데 따로 메서드로직이 구현되어 있는건 아니구요.. 
의존받아서 사용하나 싶어서 뒤져봤는데 안보이더라구요... ㅠㅡㅠ
    CommentAdd your comment...

    2 answers

    1.  
      2
      1
      0
      조건식 ? A : B ; 
      수식입니다.
      조건식 : $this->authenticated($request$this->guard()->user()) 
      A : 빈값
      B : redirect()->intended($this->redirectPath());
      if문으로 바꾸면
      if(  $this->authenticated($request$this->guard()->user()) 
      {
      }else{
          redirect()->intended($this->redirectPath());
      }
      1. 몽키

        아 3항연산자를 빈값으로 쓸땐 이렇게 하는군요...

        감사합니다.

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

      AuthenticatesUsers는 trait로 선언되어 있고, 이 trait를 사용하는 클래스에서 authenticated() 함수를 오버라이드하도록 구현된 것으로 추정됩니다.

      아래 링크를 보면 authenticated() 함수는 본문이 없어 void를 리턴하고 있고, 따라서 authenticated() 함수를 오버라이드하기 전에는 (조건식) ? (조건식이 참일때 실행할 로직) : (조건식이 거짓일때 로직 ; 표현식에서 무조건 (조건식이 거짓일때 로직) 을 타게 됩니다.

      https://github.com/laravel/framework/blob/5.6/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php#L117-L120

      삼항 연산자는 catchu87님이 잘 설명해 주셨네요.

        CommentAdd your comment...