Symfony4 UserInterface 缺失 ->getId() 如何访问用户 ID
Symfony4 UserInterface missing ->getId() how to access users id
为什么 Symfony 4 的 UserInterface
里面没有 getId()
方法?我试图将 UserInterface $user
传递给我的控制器方法,以使用 $user->getId()
实际访问当前登录用户的 ID。但是这个方法根本不存在于这个接口中 - 谈论最佳实践我不应该简单地将这些方法添加到接口中,对吧?
我也尝试使用我的实体,但无法访问当前用户对象以获取对象的 ID。
第一次看sf4,我是不是完全听错了?
你可以在没有 UserInterface 的情况下获取当前登录的用户(你不需要它),就像这样:
$user = $this->getUser()
要获取用户的 Id
,您可以使用:
$user = $this->getUser()->getId();
Symfony 的 UserInterface
是安全组件的一部分。安全组件只关心身份验证。对于组件,username
是用户的唯一标识符。它不假定您的用户有一个 id 字段。它只关心与身份验证相关的字段。
您不应将 UserInterface
作为依赖项注入控制器方法中,因为它不是服务。相反,Symfony 通过 $this->getUser()
方法提供了一个快捷方式。这是类型提示 return a UserInterface
。如果你想对你的具体实现进行类型提示,只需在你的控制器 class 名称之上添加一个文档块:@method User|null getUser()
.
编辑:
在 @method User|null getUser()
中添加了 null
,因此您知道如果没有经过身份验证的用户,该调用可能 return 为空。这也将有助于代码智能工具警告您注意空指针异常。
为什么 Symfony 4 的 UserInterface
里面没有 getId()
方法?我试图将 UserInterface $user
传递给我的控制器方法,以使用 $user->getId()
实际访问当前登录用户的 ID。但是这个方法根本不存在于这个接口中 - 谈论最佳实践我不应该简单地将这些方法添加到接口中,对吧?
我也尝试使用我的实体,但无法访问当前用户对象以获取对象的 ID。
第一次看sf4,我是不是完全听错了?
你可以在没有 UserInterface 的情况下获取当前登录的用户(你不需要它),就像这样:
$user = $this->getUser()
要获取用户的 Id
,您可以使用:
$user = $this->getUser()->getId();
Symfony 的 UserInterface
是安全组件的一部分。安全组件只关心身份验证。对于组件,username
是用户的唯一标识符。它不假定您的用户有一个 id 字段。它只关心与身份验证相关的字段。
您不应将 UserInterface
作为依赖项注入控制器方法中,因为它不是服务。相反,Symfony 通过 $this->getUser()
方法提供了一个快捷方式。这是类型提示 return a UserInterface
。如果你想对你的具体实现进行类型提示,只需在你的控制器 class 名称之上添加一个文档块:@method User|null getUser()
.
编辑:
在 @method User|null getUser()
中添加了 null
,因此您知道如果没有经过身份验证的用户,该调用可能 return 为空。这也将有助于代码智能工具警告您注意空指针异常。