每当用户单击指向外部域的链接时,启动Orchard CMS工作流

本文关键字:链接 启动 Orchard 工作流 CMS 用户 单击 外部 | 更新日期: 2023-09-27 18:19:57

我需要创建一个"减速带",每当用户点击一个链接将他们引导到另一个网站(而不是域上)时,它就会发出警告。有没有办法创建一个自定义的Orchard工作流活动,只要点击网站上的链接就会激活?每当页面上的链接(或锚标记)被点击时,我在让C#触发事件时遇到了问题(我不能只向每个锚标记添加onServerClick事件,也不能向具有特定id的锚标记添加事件处理程序,因为我需要它在所有锚标记上触发,其中许多锚标记在创建时都会动态分配一个id)。

我正在考虑的另一个选项是创建一个自定义的工作流任务,该任务将在任何内容项中搜索链接,然后为任何确定指向外部url的链接添加减速带。是否可以使用C#在创建/发布时搜索任何内容项的内容以查找锚标签,然后以某种方式更改标签以包含减速带?

顺便说一句,我还需要能够将URL列入白名单,这样第三方就不能使用减速带将用户引导到恶意网站。

很长一段时间以来,我一直被这件事难住了。如果能提供任何帮助,我将不胜感激。

每当用户单击指向外部域的链接时,启动Orchard CMS工作流

实现这一点的一种方法是添加一点客户端脚本来拦截a标记点击事件,并根据您想要实现的逻辑来处理它们。优点是性能和易于实现。很少有人禁用javascript,而那些禁用javascript的用户大概可以在地址栏中读取域名,所以没有任何缺点。

如果你不想使用javascript,另一种方法是编写一个服务器端过滤器,解析输出的响应,找到所有的a标记,并用一个特殊控制器的URL动态替换它们的URL,实际的URL作为querystring参数传递。这种方法的缺点是,它将对服务器的性能产生重要影响,而且很难编写。

但到目前为止,对你和你的用户来说,解决这个问题的最好方法是说服你的法律部门,这是一个非常糟糕的想法,而且实际上这里没有法律问题(但我可能错了:不是律师(这不是法律建议))。