0

我使用 FOS 用户包和 LdapBundle 让我的用户连接到网站。我创建了一个表单,我想跟踪谁添加了条目。所以我想将添加/修改那个东西的用户保存到数据库中。

做这个的最好方式是什么 ?由于它将是一个表单,我的第一个想法是在我的 FormType 上使用当前用户 ID 创建一个隐藏字段,但我认为它是安全的。

任何建议将不胜感激。

谢谢 !

4

2 回答 2

1

我建议不要使用隐藏字段,因为它很容易被操纵。

更好的方法是注入您的表单并通过事件SecurityContext将登录用户绑定到该对象。POST_SUBMIT

于 2014-11-14T16:55:32.863 回答
1

我不知道 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) ...

于 2014-11-14T17:04:27.940 回答