我搜索了FOSUserBundle私人资料,但无济于事

时间:2016-03-23 09:08:41

标签: php symfony fosuserbundle

所以我尝试创建一个包含私有配置文件的symfony项目,我使用FriendsOfSymfony,但是如果我创建了两个用户,每个用户都可以看到其他人上传的文件。我试图在多个网站上搜索,但未能找到对我有用的东西。 例: Adding extended profile entity to FOS UserBundle

我想为每个用户创建私有配置文件以上传文件,除了他们之外,没有人能够看到它们(只有管理员和特定用户)。

2 个答案:

答案 0 :(得分:1)

问题非常广泛。

您需要为您的应用程序引入身份验证。

RewriteEngine On RewriteCond %{HTTP_HOST} ^stoikovstroi\.com\bg\противопожарни-врати$ [OR] RewriteCond %{HTTP_HOST} ^www\.stoikovstroi\.com\bg\противопожарни-врати$ RewriteCond %{REQUEST_URI} !^/vina/index.php/protivpojarni-vrati RewriteRule (.*) /vina/$1/index.php/protivpojarni-vrati user id添加到您上传的文件中。然后在控制器中列出/显示文件(user relation) - 仅加载属于此特定(登录)用户的文件。

对于管理员访问权限 - 最好是创建特殊后台或实施User Impersonation

在Symfony文档中了解更多相关信息:http://symfony.com/doc/current/components/security/authentication.html

答案 1 :(得分:1)

如果您已经延期

  

的Symfony \捆绑\ FrameworkBundle \控制器\控制器

或FOSUserBundle控制器你可以尝试做这样的事情:

public function publicProfileAction($handleOrHash = '')
{
    if ($handleOrHash == '') {
        throw new NotFoundHttpException("Unable to find this user");
    }

    $user = $this->getUserService()->getUserByHandleOrHash($handleOrHash);

    if (!$user) {
        throw new NotFoundHttpException("Unable to find this user");
    }

    if ($user != $this->getUser()) {
        throw new AccessDeniedException("You cannot see this user profile");
    }

    return $this->render('MyUserBundle:Default:public-profile.html.twig',
        array('user' => $user)
    );
}

其中getUserService()将返回一个对象,该对象可以使用名为getUserByHandleOrHash()的方法访问userRepository,该方法使用存储库进行学说查询。