所以我尝试创建一个包含私有配置文件的symfony项目,我使用FriendsOfSymfony,但是如果我创建了两个用户,每个用户都可以看到其他人上传的文件。我试图在多个网站上搜索,但未能找到对我有用的东西。 例: Adding extended profile entity to FOS UserBundle
我想为每个用户创建私有配置文件以上传文件,除了他们之外,没有人能够看到它们(只有管理员和特定用户)。
答案 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,该方法使用存储库进行学说查询。