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 中的链接 的相关文章

  • 如何防止客户修改 firebase 数据(在没有后端的 Web 应用程序中)?

    我最近开始探索 firebase 作为我的 Angular JS 单页网站的身份验证解决方案 它看起来很完美 然而 从安全角度来看 我不太确定是否将逻辑保留在我的应用程序中的客户端 假设我对在我的网站上注册的客户进行了 isProfileC
  • 使用WordPress get_results()数据库函数是否可以防止sql注入

    似乎找不到答案 但想知道以下对数据库的查询是否容易受到 SQL 注入的攻击 searchPostResults wpdb gt get results querySearchVals OBJECT 这是使用的查询 global wpdb o
  • 在 PHP 中,如何检测由于超出 max_input_vars 而导致输入变量被截断?

    我知道一个E WARNING由 PHP 生成 PHP 警告 未知 输入变量超过 1000 https stackoverflow com q 9673895 367456 但我如何在我的脚本中检测到这一点 一个 足够接近 的方法是检查if
  • Symfony:为 ManyToOne-OneToMany 关系嵌入表单集合

    我正在使用 Doctrine 和这三个 相关 实体运行 Symfony 2 3 出版物 Author and 作者发表 Both Author and 出版物具有多对一关系作者发表 所以它基本上是一个多对多关系Author and 出版物但
  • 列出当前请求中使用的所有 Twig 模板

    我正在使用 Symfony2 和 Twig 模板引擎 有没有办法输出当前请求中加载的所有 Twig 模板文件的列表 包括通过加载的模板文件extends include etc 当覆盖第三方捆绑包的块时 这将使我的生活变得更加轻松 但我找不
  • 如何使用 php 通过 https 下载文件

    我需要使用 PHP 下载 xml 文件 我可以在对文件进行curl 调用时通过设置以下选项来读取文件的内容 curl setopt http CURLOPT SSL VERIFYPEER false curl setopt http CUR
  • 从命令调用操作

    我想通过自定义命令执行操作 Controller php类的forward方法提供了这个功能 但是不知道从命令文件的execute 方法访问它 由于请求堆栈的原因 使控制器成为服务将导致性能开销 因为它应该返回一个HttpResponse
  • 如何在 JASPIC 中保存经过身份验证的用户?

    我开发了一个安全认证模块 SAM 并实现了validateRequest方法 我还有一个简单的 Web 应用程序配置为使用此 SAM In my validateRequest方法 我检查 clientSubject 并设置一个Caller
  • 从 ios 应用程序到 symfony2 Web 应用程序的登录和管理会话

    我使用 Symfony2 开发了一个 Web 应用程序 我用过FOS用户包用于用户管理和安全 现在 我正在考虑为我的网络开发一个本机 iOS 应用程序 但并不真正知道如何解决从应用程序创建会话的问题 并在整个交互用户应用程序中维护它 换句话
  • Java Web Start 的证书已过期

    JWS 对代码签名证书过期有何反应 根据我的观察 它似乎忽略了 CA 签名证书的到期日期 但我想找到一些确凿的证据 例如官方文档 来证实这一点 如果签名的 jar 被赋予时间戳 来自时间戳权威 那么即使在证书过期之后签名仍然有效 假设时间戳
  • Symfony2 实体字段在选项为空时显示所有条目

    我的 Symfony2 项目中有一个实体类型表单字段 builder this gt createFormBuilder projects this gt getProjects builder gt add project entity
  • 有关 CredEnumerate 的帮助

    作为后续this https stackoverflow com questions 199518 how to programatically add mapped network passwords winxp我希望有人可以帮助解决这个
  • 有人试图破解我的服务器吗?请告诉我我能做什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在我的服务器日志文件中找到了这些请求 我在亚马逊EC2上使用nodejs manager html manager html manag
  • 在数据转换之前应用验证

    我想将从提交的用户数据中获得的文本字段转换为 Symfony2 中的对象 我使用 DataTransformer 来做到这一点 当我使用 NotEmpty 或 NotNull 等内置验证器或任何以标准方式内置的自定义验证器时 Symfony
  • 保护 ASP.NET MVC 应用程序中的 ajax 调用的安全

    我有一个基于 ASP NET MVC 的应用程序 它允许根据用户进行不同级别的访问 当前的工作方式是 当用户访问页面时 会根据数据库进行检查以确定用户拥有的权限 然后根据用户拥有的访问级别选择视图 有些用户比其他用户看到更多数据并拥有更多可
  • XML 到 YAML 转换

    我怎样才能把它转换成yml
  • 海报风格的电子邮件验证

    我正在考虑创建一个类似于Posterous的服务 用户可以在其中发布到固定地址 例如 电子邮件受保护 cdn cgi l email protection然后帖子的身份验证将基于发件人地址和标头签名的某种组合 Posterous 似乎正在做
  • 覆盖注册 FOSUserBundle Symfony2

    我试图覆盖 FOSUserBundle 中的注册表单 但收到此错误 我已经按照官方文档中的教程进行操作 Link https github com FriendsOfSymfony FOSUserBundle blob master Res
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 如何禁止 celery 中的 pickle 序列化

    Celery 默认使用 pickle 作为任务的序列化方法 如中所述FAQ http ask github com celery faq html isn t using pickle a security concern 这代表一个安全漏

随机推荐

  • 消除解析器精神规则中的左递归 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 编辑项目 只有其所有者才能编辑项目 我已经实现了一个投票者来阻止