get('security.context')->getToken(); 如果 Controller 位于不 prote-6ren">
gpt4 book ai didi

php - Symfony 2——匿名页面有空的 "security.context" token ?

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

当我在 Controller 中执行此操作时:

$token = $this->get('security.context')->getToken();

如果 Controller 位于不 protected URL 下,则 token 为空:

access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_ADMIN }
- { path: ^/public, roles: IS_AUTHENTICATED_ANONYMOUSLY }

在我的例子中, Controller 操作是在 /public 上调用的。如果代码在 / protected 页面下运行,则 token 存在。

我想要这个的原因是因为我想在用户登录的情况下包含额外的信息,我想检查这个“ token ”是否存在。

是否有更好的方法来检查用户是否已登录——在 protected 区域和未 protected 区域都有效的方法?

最佳答案

您可以通过检查用户是否已完全通过身份验证来检查用户是否已通过身份验证,也就是说,他们是否使用 isGranted 函数是非匿名的。

use Symfony\Component\Security\Core\Exception\AccessDeniedException

public function editAction()
{
if (false === $this->get('security.context')->isGranted(
'IS_AUTHENTICATED_FULLY'
)) {
throw new AccessDeniedException();
}
// ...
}

参见 here了解更多信息。

关于php - Symfony 2——匿名页面有空的 "security.context" token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13457205/

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