我使用 FOS 用户包和 LdapBundle 让我的用户连接到网站。我创建了一个表单,我想跟踪谁添加了条目。所以我想将添加/修改那个东西的用户保存到数据库中。
做这个的最好方式是什么 ?由于它将是一个表单,我的第一个想法是在我的 FormType 上使用当前用户 ID 创建一个隐藏字段,但我认为它是安全的。
任何建议将不胜感激。
谢谢 !
我使用 FOS 用户包和 LdapBundle 让我的用户连接到网站。我创建了一个表单,我想跟踪谁添加了条目。所以我想将添加/修改那个东西的用户保存到数据库中。
做这个的最好方式是什么 ?由于它将是一个表单,我的第一个想法是在我的 FormType 上使用当前用户 ID 创建一个隐藏字段,但我认为它是安全的。
任何建议将不胜感激。
谢谢 !
我建议不要使用隐藏字段,因为它很容易被操纵。
更好的方法是注入您的表单并通过事件SecurityContext
将登录用户绑定到该对象。POST_SUBMIT
我不知道 ldapBundle 但是当我想保存例如我在控制器中做的照片时
$user=$this->security_context->getToken()->getUser();
$form = $this->createForm(new PhotoType(), $photo )
$request = $this->get('request');
if ($request->getMethod() == 'POST') {
$form->handleRequest($request);
if ($form->isValid()) {
$photo->setUser($user);
$em = $this->getDoctrine()->getManager();
$em->persist($photo);
$em->flush();
....
它是一个基本代码,您还必须在执行持久性之前检查用户是否存在:if($user) ...