我想在 symfony 中的角色之间切换取决于 onAuthenticationSuccess.. 公共功能 onAuthenticationSuccess(请求 $request,TokenInterface $token,字符串 $firewallName):?响应 { 如果 ($targetPath = $this->getTargetPath($request->getSession(), $firewallName)) { 返回新的 RedirectResponse($targetPath); }
$user = $token->getUser();
if (in_array("ROLE_INSTRUCTOR", $user->getRoles(), true)) {
return new RedirectResponse($this->urlGenerator->generate('app_instructor'));
}
}
protected function getLoginUrl(Request $request): string
{
return $this->urlGenerator->generate(self::LOGIN_ROUTE);
}
public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response
{
if ($targetPath = $this->getTargetPath($request->getSession(), $firewallName)) {
return new RedirectResponse($targetPath);
}
$user = $token->getUser();
if (in_array("ROLE_INSTRUCTOR", $user->getRoles(), true)) {
return new RedirectResponse($this->urlGenerator->generate('app_instructor'));
}
else if (in_array("ROLE_MEMBER", $user->getRoles(), true)){
return new RedirectResponse($this->urlGenerator->generate('app_member'));
}
else if (in_array("ROLE_ADMIN", $user->getRoles())){
return new RedirectResponse($this->urlGenerator->generate('app_admin'));
}
// else {
// return new RedirectResponse($this->urlGenerator->generate('app_bezoeker_bezoeker'));
// }
// For example:
return new RedirectResponse($this->urlGenerator->generate('app_bezoeker'));
// throw new \Exception('TODO: provide a valid redirect inside '.__FILE__);
}
protected function getLoginUrl(Request $request): string
{
return $this->urlGenerator->generate(self::LOGIN_ROUTE);
}