如何在角色 symfony 6 之间切换?

问题描述 投票:0回答:1

我想在 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);
}
html laravel symfony bootstrap-4 twig
1个回答
0
投票
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.