最佳做法是仅允许访问所有者用户和管理员? [英] Best practice to allow access to owner user and admins only?

查看:152
本文介绍了最佳做法是仅允许访问所有者用户和管理员?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Symfony2中的站点进行编程,使用FOSUserBundle来管理用户访问.我有一个名为站点"的实体,该实体可以有许多用户.只有相关用户和管理员才有权访问Site:show操作.

I'm programming a site in Symfony2, using FOSUserBundle for managing user access. I have an entity called "Site" which can have many Users. Only the related users and the admins should have access to the Site:show action.

我不知道是否可以在security.yml中执行此操作,或者是否必须直接在控制器中或其他位置执行此操作.推荐的方法是什么?

I don't know if it's possible to do this in security.yml or if I have to do it directly in the controller or somewhere else. What's the recommended way?

谢谢.

推荐答案

如果要在对象级别限制每个用户的访问权限,则需要查找 ProblematicAclManagerBundle 是简化控制器中ACL使用的一个很好的包装器.

If you want to restrict access per user at the object level, then you're looking for ACLs. ProblematicAclManagerBundle is a nice wrapper to simplify ACL usage in controllers.

否则,如果要限制每个角色的访问权限,则可以使用security.yml中定义的路由和角色

Otherwise, if you want to limit access per role, then you can use routes and roles defined in security.yml

以下是其外观示例:

access_control:
  - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
  - { path: ^/admin, role: ROLE_ADMIN }
  - { path: ^/.*, role: [IS_AUTHENTICATED_ANONYMOUSLY] }

在您的控制器中,您还可以使用:

In your controller, you can also use:

use JMS\SecurityExtraBundle\Annotation\Secure;

/**
 * @Route("/home", name="home") 
 * @Secure(roles="ROLE_USER")
 */
public function indexAction()
{
    ...
}

这篇关于最佳做法是仅允许访问所有者用户和管理员?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆