首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自HTML-Helper的链接的自我验证?

来自HTML-Helper的链接的自我验证?
EN

Stack Overflow用户
提问于 2015-08-19 01:51:25
回答 1查看 66关注 0票数 0

如何防止链接自动显示在模板ctp文件中?

我给你举个例子:

允许用户(id= 1)查看teamcalendars/view/1用户(id= 2)不允许查看teamcalendars/view/1。

User1是团队1的成员,应该看到并遵循链接。User2不是任何团队的成员,也不应该看到日历的链接,也不应该遵循它。但我想将链接放在team /index文件中,两个用户都可以访问并查看所有团队,但每个团队具有不同的选项。

如果User2跟踪该链接(或手动将其键入浏览器),控制器将返回重定向和有关缺少权限的错误消息。无论如何,User2永远不会实现这一目标。但我如何防止蛋糕显示User2的链接(误导性的)?

有没有可能将链接连接到控制器和操作,以及它所指向的对象的id,这样我就不需要为每个视图构建和传递变量来决定可以显示哪些链接?

很抱歉没有提供任何代码,但是我想任何人都知道如何从Controller发送数组到View,以及如何使用if(){echo $this->Html->link()}验证它,这就是我目前正在做的事情。

提前感谢您的帮助或意见。

EN

回答 1

Stack Overflow用户

发布于 2015-08-19 09:27:04

一种选择是定义您自己的HtmlHelper并覆盖链接函数,以便它首先检查链接上的权限,只有在允许访问时才输出它。类似于以下内容:

代码语言:javascript
复制
namespace App\View\Helper;
use \Cake\View\Helper\HtmlHelper;
// Or, if you're already using a third-party HTML helper, something like
// use BootstrapUI\View\Helper\HtmlHelper as HtmlHelper;

class MyHtmlHelper extends HtmlHelper
{
    function link($title, $url = null, array $options = [])
    {
        if (checkMyPermissions($url)) {
            return parent::link($title, $url, $options);
        }
    }
}

然后在你的AppController中:

代码语言:javascript
复制
use App\View\Helper\MyHtmlHelper;
public $helpers = [
    'Html' => ['className' => 'MyHtmlHelper'],
    // ... and all your other helpers
];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32079363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档