2016-07-08 1 views
0

별도의 사이트 대신 홈페이지에 로그인하고 싶습니다./login route에 자격 증명을 입력하면 모든 것이 정상이지만/route에서는 작동하지 않습니다.Symfony3 : 다른 사이트에서 렌더링 할 때 로그인 양식이 작동하지 않습니다.

내가 base.html.twig에서이 명령을 사용하여 로그인 양식을 렌더링 (테스트 목적으로 지금은 각 페이지에서 로그인 폼을 렌더링 할) : 여기

{{ render(controller("AppBundle:Security:login")) }} 

내 login.html.twig입니다 :

{% if error %} 
     <div>{{ error.messageKey|trans(error.messageData, 'security') }}</div> 
    {% endif %} 

    <form action="{{ path('login') }}" method="post"> 
     <div class="form-group"> 
      <input type="text" class="form-control" id="username" placeholder="Email" name="_username" value="{{ last_username }}" /> 

      <input type="password" class="form-control" id="password" placeholder="Heslo" name="_password" /> 
     </div> 
     <button type="submit" class="btn btn-success">Přihlásit</button> 
     <a href="/registration" class="btn btn-info" role="button">Registrovat</a> 
    </form> 

그리고 내 loginAction : security.yml에서

/** 
    * @return array 
    * @Route("/login", name="login") 
    * @Template() 
    */ 
    public function loginAction() 
    { 
     $authenticationUtils = $this->get('security.authentication_utils'); 

     // get error 
     $error = $authenticationUtils->getLastAuthenticationError(); 

     // last username entered by the user 
     $lastUsername = $authenticationUtils->getLastUsername(); 

     return [ 
      'last_username' => $lastUsername, 
      'error'   => $error 
     ]; 
    } 

그리고 secured_area :

secured_area: 
      pattern: ^/ 
      anonymous: ~ 
      provider: main 
      form_login: 
       login_path: login 
       check_path: login 
      logout: 
       path: /logout 
       target:/

로그인 양식이 홈페이지에서 성공적으로 렌더링됩니다. 하지만 자격 증명을 입력하고 버튼을 클릭하면 아무 일도 일어나지 않습니다. 아마도 버튼이 로그인 페이지에 정의 된 동작 대신 홈페이지에 정의 된 동작 양식을 찾으려고하기 때문일 수 있습니까?

대신 버튼이 원래 (로그인) 동작을 사용하도록 "강제 설정"할 수 있습니까?

답장을 보내 주셔서 감사합니다.

답변

1

귀하의 로그인 양식을 표시하는 컨트롤러가 아닌 security.yml에 구성된 check_path에 로그인 양식을 게시해야합니다.

사용자를 인증하는 것은이 URL (보안 확장 프로그램에 의해 전체적으로 가로 채기)이며, 오류가 발생하면 사용자를 로그인 작업으로 다시 리디렉션합니다.

+0

http://symfony.com/doc/current/cookbook/security/form_login_setup.html 감사합니다 : 설정하는 방법 양식 기반 로그인을 문서에 전용 요리 책 문서를 확인에 대한 자세한 지침은

. symfony를 처음 접했을 때 check_path에 양식을 게시하는 방법을 모르겠습니다. 내 질문을 업데이트했습니다 - security.yml의 일부가 추가되었습니다. check_path에 대해 다른 페이지를 만들어야합니까? 일을 어떻게 만드는지 예를 들어 주시겠습니까? 감사합니다. –

+0

한 번 더 답변을 읽었습니다. 보안 확장이 로깅을 처리해야한다는 의미입니까? 렌더 컨트롤러 라인이 버그를 유발할 수 있습니까? 로깅을 위해 버튼을 클릭해도 아무런 변화가 없습니다. 로그인이 실패하면 버튼이/login으로 리디렉션됩니다. 맞습니까? 제출 버튼에는 매개 변수가 없습니다./login이 아닌 다른 페이지에서 양식을 렌더링 할 때 symfony가 로깅을위한 버튼이라는 것을 어떻게 알 수 있습니까? –

+0

login_path에 check_path와 동일한 경로를 사용하고있는 것으로 보입니다. 다른 URL로 check_path에 대한 새 라우트를 작성해야합니다. 그런 다음 양식 태그에서 조치 특성에 대한 점검 경로의 URL을 생성해야합니다. – Gerry