Symfony2:如何根据权限隐藏 Twig 中的链接

2023-11-23

我的应用程序显示了项目列表、项目详细信息页面以及用于编辑这些项目的表单。这些是路线:

  • / - 项目列表
  • /project/42 - 查看项目(项目详细信息页面)
  • /project/42/edit - 编辑项目

只有其所有者才能编辑项目。

我已经实现了一个投票者来阻止非所有者访问 /project/42/edit 。

现在,我还想从项目详细信息页面隐藏“编辑项目”链接。该怎么做呢?理想情况下,在 Twig 中,我想做类似的事情



{% if may_access(path('project_edit', { 'id': project.id })) %}
  <a href="{{ path('project_edit', { 'id': project.id }) }}">edit project</a>
{% endif %}
  

我可以将此功能实现为 Twig 扩展,但也许类似的功能已经存在。


函数 is_granted() 实际上有第二个参数这让我可以做我需要做的事情:



{% if is_granted("MAY_EDIT", project) %}
  <a href="{{ path('project_edit', { 'id': project.id }) }}">edit project</a>
{% endif %}
  

我将其与控制器操作中的检查结合使用:



public function editAction(Project $project)
{
    if (!$this->get('security.context')->isGranted('MAY_EDIT', $project)) {
        $this->flash('You are not allowed to edit this project');
        return $this->show($project);
    }
    // ...
}
  

这实际上与方法非常相似nifr在他的回答中使用Sonata 用户 - 自定义字段的安全性。我希望找到一种方法来自动调用投票者并避免调用 isGranted()。

如果你想看一下完整的代码,它在我的教程项目中发布于 github.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony2:如何根据权限隐藏 Twig 中的链接 的相关文章

  • CAS(代码访问安全)的目的是什么?

    我参与过很多 Web 应用程序 但从未使用过 CAS 也许也从未觉得有必要使用它 什么时候需要使用CAS 人们真的在他们的应用程序中使用它吗 CAS 实际上只在桌面应用程序中有用 可以这么说 在桌面应用程序中 您想要限制通过网络 例如 运行
  • Symfony 2 FOSUserBundle 与产品表的关系

    如果之前有人问过这个问题 我提前道歉 我已成功设置 FOSUserBundle 我正在尝试设置 http symfony com doc current book doctrine html http symfony com doc cur
  • 使用 Symfony 表单上传多个文件

    UPDATED在我的 Symfony 项目中 我能够上传单个图像 现在我正在尝试上传多个图像 class ImageFile extends AbstractType param FormBuilderInterface builder p
  • 一个 Guice 就绪的安全框架?

    有没有人见过一个为与 Guice 一起工作而编写的框架 或者一个将现有安全系统 即 Acegi 与 Guice 集成的库 到目前为止我发现了以下内容 http code google com p warp security http cod
  • 了解 ASP.NET 应用程序文件夹

    ASP NET 中的应用程序文件夹用于存储对运行网站至关重要的各种元素 我想更深入地了解这些文件夹 特别是文件夹的可访问性 根据有关的文章ASP NET 网站布局 http msdn microsoft com en us library
  • 使用自定义服务的编译器传递加载 Symfony 的参数

    根据这个问题如何从数据库加载 Symfony 的配置参数 Doctrine https stackoverflow com q 28713495 8945214我有一个类似的问题 我需要动态设置参数 并且我想提供来自另一个自定义服务的数据
  • 限制 SQL Server 连接到特定 IP 地址

    我想将 SQL Server 实例的连接限制为特定 IP 地址 我想阻止来自除特定列表之外的任何 IP 地址的任何连接 这是可以在 SQL Server 实例或数据库中配置的东西吗 听起来像是你会使用Windows防火墙 http tech
  • 覆盖默认标识符生成策略对关联没有影响

    交响乐 2 7 2 学说 ORM 2 4 7 MySQL 5 6 12 PHP 5 5 0 我有一个具有自定义 ID 生成器策略的实体 它工作完美 在某些情况下 我必须使用 手工制作 的 ID 来覆盖此策略 当主实体在没有关联的情况下被刷新
  • 生产环境的 Flask-Login 与 Flask-Security

    我正在构建一个功能 供用户注册 登录 验证和授权自己 特别是使用 Python Flask 作为后端 我找到了一些解决方案 例如flask login and flask security 据我了解 flask login实际上并没有进行任
  • 自定义 Facebook FOSFacebookBundle 登录按钮

    有人知道如何自定义 更改 FosFacebook 登录按钮的图像吗 facebook login button autologoutlink true 并在整页 Facebook 登录上重定向 而不是在弹出窗口上重定向 这使用了 twig
  • 在 Symfony 序列化中更改序列化属性名称

    我正在使用 Symfony 序列化器 效果很好 use Symfony Component Serializer Annotation Groups Groups default notification public function g
  • 如何从实体内部获取Web目录路径?

    我研究了如何用 Doctrine 处理文件上传 http symfony com doc current cookbook doctrine file uploads html我不想硬编码 DIR web this gt getUpload
  • 学说 dbal querybuilder 作为准备好的语句

    我正在尝试创建一个 Doctrine DBAL 查询生成器对象并在其中设置一个参数 使用 postgres db dbal 2 3 4 原则 connection this gt em gt getConnection qb connect
  • 在 Symfony3 中覆盖 Doctrine2 类型

    我想用Carbon http carbon nesbot com docs 我的 Symfony 3 2 应用程序中的对象而不是 SPL DateTime 对象 我发现了一组 DoctrineExtension 类here https gi
  • 什么是“声明式安全”?一般来说

    这个问题的答案 声明式安全 这是什么 https stackoverflow com questions 1210609并没有告诉我太多 坦率地说 根本没有告诉我任何事情 我看到一篇关于 NET 性能的博客 其中提到了这一点 您使用声明式安
  • 如何在 Symfony2 中检查表单构建器中的用户角色?

    好的 我正在尝试检查用户是否具有特定角色 我做到了this https stackoverflow com questions 11998761 how can i access the user role in form builder
  • 如何使用 PHP 正确添加跨站请求伪造 (CSRF) 令牌

    我正在尝试为我网站上的表单添加一些安全性 其中一个表单使用 AJAX 另一个表单是简单的 联系我们 表单 我正在尝试添加 CSRF 令牌 我遇到的问题是令牌有时只显示在 HTML 值 中 其余时间 该值为空 这是我在 AJAX 表单上使用的
  • 强化文件中的跨站脚本

    我在控制器中有以下代码 参数 base64String fileName 是从浏览器发送的 var fileContent Convert FromBase64String base64String return File fileCont
  • 如何在 Symfony2 WebTestCase 中重定向后获取当前 URL?

    使用 Symfony2 WebTestCase 我进行了以下测试 client gt request GET this gt assertTrue client gt getResponse instanceof RedirectRespo
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter

随机推荐

  • 消除解析器精神规则中的左递归 x3

    我目前陷入了一条规则 我试图使用 boostspirit x3 来解析 这是我要解析的 EBNF 使用 Spirit 中的 运算符作为列表 type class type lambda type lambda type more arg l
  • “NoMethodError:[:not(.block-layered-nav)]:Array的未定义方法‘特异性’”

    这是对这篇文章的补充 无法在 Magento CE 1 9 中编译 rwd 皮肤 SCSS Windows 8 1 PowerShell Compass 1 0 1 Polaris Sass 3 4 6 Selective Steve ru
  • Pandas 按列将 CSV 拆分为多个 CSV(或 DataFrame)

    我对一个问题感到非常困惑 如果有一些帮助或提示 我将不胜感激 问题 我有一个 csv 文件 其中有一列可能有多个值 例如 Fruit Color The evil column Apple Red something1 Apple Gree
  • 使用 ant 编辑/追加数据到文本文件

    我正在尝试在 ant 构建过程中向 jad 文件添加属性 ant 中有任务可以做到这一点吗 我需要做的就是在文本文件的末尾添加一行文本 但我找不到执行此操作的任务 我相信这会起作用 现在测试一下
  • 检测 jQuery.ajaxComplete() 中是否存在 HTTP 方法(POST、GET)

    In a jQuery ajaxComplete 如何检测 HTTP 方法 特别是 GET 或 POST 我尝试阅读 jQuery 文档并四处搜索 但似乎找不到传递给内部函数处理程序的 3 个对象的太多文档 jQuery element a
  • 如何诊断或检测 Java 静态初始化器中的死锁

    在 Java 中使用静态初始化器是否是一个好主意超出了这个问题的范围 我在 Scala 应用程序中遇到了死锁 我认为这是由编译类中的互锁静态初始化器引起的 我的问题是如何检测和诊断这些死锁 我发现当涉及静态初始化程序块时 用于死锁的普通 J
  • 如何将 jQuery 自动完成组合框与 AJAX JSON 数据一起使用?

    我需要使用组合框执行以下操作 Select box有一个用户可以搜索的默认城市列表 如果用户在input框 我需要进行 ajax 调用来获取数据并向用户显示选项 如果根据用户的请求获取数据 则应将这些城市附加到以下选项中Select box
  • 如何关闭生产中的 Node.js Express(ejs 模板引擎)错误?

    当我在开发服务器上出现错误时 Express 会发送回溯作为响应 然而 这对于生产来说并不好 我不想让任何人看到我的引用 我怎样才能关闭它 注意 我使用 EJS 作为模板引擎 这可能是原因 而不是表达 例如 当我在 ejs 模板中有一个未定
  • 使用 Zip() 合并不同长度的数组而不丢失值

    在下面的代码中 我合并两个类型的数组int and string 第一个的长度大于第二个 因此最后一个索引 即5 不会被合并 int numbers new 1 2 3 4 5 string words new string one two
  • 媒体查询可以根据 div 元素而不是屏幕调整大小吗?

    我想使用媒体查询根据 a 的大小调整元素的大小div它们所在的元素 我不能使用屏幕尺寸作为div只是像网页中的小部件一样使用 其大小可能会有所不同 是的 CSS 容器查询正是您所寻找的 这CSS 遏制模块是详细说明此功能的规范 您可以检查浏
  • 如何修复滚动时折叠工具栏中的视图?

    我想用两个实现折叠工具栏EditText在其中 用于用户输入的目的 我正在跟进this回答 答案给出了添加两个的完美解决方案EditText进入折叠工具栏 但行为并不如预期 我所取得的成就 预期行为 我的 XML 代码
  • 使用express.js和node上传文件,限制扩展

    我正在使用express js 和node 处理文件上传 并且基本功能正常工作 我需要的是实施一些安全措施 即限制上传某些格式 PNG JPEG 有没有一种简单的方法只允许某些格式 它会进入正文解析器吗 app use express bo
  • R 中按部分对象名称过滤或子集列表

    我有一个包含 417 个数据框的列表 每个数据帧在列表中都有一个单独的名称 以 Dec 1981 开头并以 Aug 2016 结尾 这些对象按时间顺序排列 我想仅按月份名称来子集或过滤此列表 例如 创建一个仅包含 Jan 对象 数据框 的新
  • 内联块没有边距?

    我有几个 DIV 显示为内联块 他们似乎从浏览器中自动应用了间距 它们的边距 填充设置为 0 有没有办法在不使用负边距的情况下纠正这个问题 山姆 你看到的那个空间实际上是空白 这就是为什么删除填充和边距没有任何作用 让我解释 当你有这个时
  • 导入错误:没有名为“MySQL”的模块

    我已成功下载 Connector Python for MySQL 我在 Python 的 shell 中使用以下代码来测试我的连接 import mysql connector 我收到以下错误消息 Traceback most recen
  • 如何在<区域>上添加边框?

    有没有办法在周围设置边框 area 元素 我需要这样做来测试图像映射 但这不起作用 area outline 1px solid red border 1px solid red 如果您愿意使用 Javascript 请添加mouseove
  • 如何将日期时间转换为时间

    我正在选角DateTime字段到时间通过使用CAST Syntax select CAST time as time as CSTTime 约会时间2015 03 19 00 00 00 000 当前输出 时间03 05 36 000000
  • 是否可以在没有任何用户交互的情况下创建选择对象?

    Can a 选择无需任何用户交互即可创建对象 window getSelection 确实返回一个Selection反对 但你不能modify 除非用户做出某种选择 是否可以创建一个从页面上第一个元素开始的选择 然后能够modify 不需要
  • JSF 所需的 URL 重写解决方案

    假设以下应用场景 App server ear1 web1 ctx1 lt http localhost ctx1 xxx lt http www example com xxx
  • Symfony2:如何根据权限隐藏 Twig 中的链接

    我的应用程序显示了项目列表 项目详细信息页面以及用于编辑这些项目的表单 这些是路线 项目列表 project 42 查看项目 项目详细信息页面 project 42 edit 编辑项目 只有其所有者才能编辑项目 我已经实现了一个投票者来阻止