gpt4 book ai didi

security - Symfony 2.1.7 - 在用户通过身份验证后更新安全 token 设置特定角色

转载 作者:行者123 更新时间:2023-12-02 22:12:10 25 4
gpt4 key购买 nike

我想在登录成功后根据取决于用户行为的参数为用户设置一些角色。

我看了一下,看起来角色存储在可通过容器访问的 security.content.token 中:


$this->container->get('security.context')->getToken()

我可以看到角色存储在这个 token 中(在我的例子中是 FOSFFacebookBundle 中的 FacebookUserToken)

我的另一个要求是我不能设置 Roles 和注销用户,它必须在同一个 session 中。

这可能吗?

最佳答案

我发现了这个问题:Get security token for non-logged user with Symfony

这让我想到我可以设置一个新的安全 token (而不是尝试更新现有 token 中的角色)。我的用户的角色没有存储在用户表中,所以这是有意义的。

public function strangeAction()
{
// Get your User, however you normally get it
$user = $userRepository->find($id);

// Save the original token in the session (just in case I need to reverse it)
$originalToken = $this->get("security.context")->getToken();
$this->getRequest()->getSession()->set('original.security.token', $originalToken);

// Create my new custom token (loading the roles of the user)
$token = new UsernamePasswordToken($user, null, "main", $user->getRolesMagically());

// Update the security context with the new token
$this->get("security.context")->setToken($token);

// Now you have access to isGranted()
if ($this->get("security.context")->isGranted("ROLE_SOMETHING"))
}

我对这个解决方案很有信心,但如果可能的话,我希望获得更多意见。

即。为什么我不应该这样做?

关于security - Symfony 2.1.7 - 在用户通过身份验证后更新安全 token 设置特定角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15084054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com