Symfony4.4로 로그인한 후 역할로 표시되는 페이지 변경
도전
심포니로 로그인 양식을 만들었습니다.
사용자는 일반과 관리자의 두 가지 역할이 있으며 로그인 후 페이지를 변경하고 싶습니다.
 전제
로그인 처리는, 공식 문서의 How to Build a Login Form 로 구현
 로그인 후 리디렉션 대상 변경 사항 조사
키워드 "symfony login redirect role"로 구그하면, symfony2 의 문서만으로 옵니다.
 
검색결과에서 다음과 같은 문서를 찾아보고 보고, 아무래도 로그인 후의 이벤트로 처리하는 것 같은 느낌과 닿습니다. Symfony2이기 때문에 아테에게는 안 되는데, 이것이 실수의 원이었습니다.
로그인 처리는, 공식 문서의 How to Build a Login Form 로 구현
로그인 후 리디렉션 대상 변경 사항 조사
키워드 "symfony login redirect role"로 구그하면, symfony2 의 문서만으로 옵니다.
 
검색결과에서 다음과 같은 문서를 찾아보고 보고, 아무래도 로그인 후의 이벤트로 처리하는 것 같은 느낌과 닿습니다. Symfony2이기 때문에 아테에게는 안 되는데, 이것이 실수의 원이었습니다.
여러가지 시행착오해 보고, 리다이렉트의 리스폰스를 재작성한다고 하는 것은, 훅으로 하는 것 같은 처리가 아닐까 결론.
How to Build a Login Form 의 3단계에 기재된
onAuthenticationSuccess 메소드에 손을 넣는 것으로 종료.이런 느낌으로 해결할 수 있었습니다.
src/Security/LoginFormAuthenticator.php
  public function __construct(UrlGeneratorInterface $urlGenerator, Security $security)
    {
        $this->urlGenerator = $urlGenerator;
        $this->security = $security;
    }
    public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
    {
        if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
            return new RedirectResponse($targetPath);
        }
        if ($this->security->isGranted('ROLE_ADMIN')) {
            return new RedirectResponse($this->urlGenerator->generate('admin_main'));
        }
        return new RedirectResponse($this->urlGenerator->generate('user_main'));    }
그 밖에 빠진 것
세션에 로그인하기 전에 액세스에 온 URL을 저장하고 있으므로 로그인 후 원하는 페이지를 표시하게 되어 있습니다.
올바른 절차로 로그아웃을 하면, 이 세션 정보는 사용되지 않는다고 생각하고 있었습니다만, 일반 페이지가 기록되고 있었던 것 같습니다.
여러 번 관리자로 로그인해도 항상 일반 페이지가 표시되어 구현 방법에 문제가 있는지 더 시간이 걸렸습니다.
쿠키를 삭제하여 세션 정보를 재설정하면 예상대로 동작했습니다.
 요약
낡은 문서나 자원은 무시하지 않으면, 다른 방향으로 데려가는 경우가 있다.
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(Symfony4.4로 로그인한 후 역할로 표시되는 페이지 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/idani/items/ccee2389af2258cda457
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
낡은 문서나 자원은 무시하지 않으면, 다른 방향으로 데려가는 경우가 있다.
Reference
이 문제에 관하여(Symfony4.4로 로그인한 후 역할로 표시되는 페이지 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/idani/items/ccee2389af2258cda457텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)