我正在使用Symfony安全设置。一切都很好,但我不知道如何做一件重要的事情:
在twig中,我可以通过执行以下操作来获取当前用户的信息:
Welcome, {{ app.user.username }}
或类似的
如何在控制器中访问相同的信息?具体地说,我希望获得当前的用户实体,这样我就可以将其以关系的方式存储在另一个实体中(一对一映射)。
我真的很希望
$this->get('security.context')->getToken()->getUser()
但这并不管用。它为我提供了一个类型为
Symfony\Component\Security\Core\User\User
我想要一种类型的
Acme\AuctionBundle\Entity\User
这就是我的实体...
发布于 2013-11-27 20:42:30
这个帖子有点旧,但我认为这可能会节省一些人的时间……
我遇到了与原始问题相同的问题,类型显示为Symfony\Component\Security\Core\User\User
最终证明,我是使用内存中的用户登录的
我的security.yml看起来像这样
security:
providers:
chain_provider:
chain:
providers: [in_memory, fos_userbundle]
fos_userbundle:
id: fos_user.user_manager
in_memory:
memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN', 'ROLE_SONATA_ADMIN' ] }
核心用户类型始终是Symfony\Component\Security\ in_memory \ user \ user如果要使用自己的实体,请使用该提供程序的用户登录。
谢谢,hj
发布于 2021-11-15 18:51:14
在Symfony版本PHP5和>= >= 8.0中,您可以使用属性来提示经过身份验证的用户,但只能在控制器中输入:
public function indexAction(#[CurrentUser] User $user): Response
{
// do something
}
发布于 2016-08-04 17:47:36
$this->container->get('security.token_storage')->getToken()->getUser();
https://stackoverflow.com/questions/7680917
复制相似问题