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.)
낡은 문서나 자원은 무시하지 않으면, 다른 방향으로 데려가는 경우가 있다.
Reference
이 문제에 관하여(Symfony4.4로 로그인한 후 역할로 표시되는 페이지 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/idani/items/ccee2389af2258cda457텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)