Sitecore + Glass:呈现 link,但忽略权限

Sitecore + Glass: Render link, but ignore permissions

我有以下内容:

<a href="@Model.Link.Url">

Link 旁边是玻璃杯 Link 属性:

        public virtual Link Link { get; set; }

问题是目标页面只允许登录用户访问。似乎 glass/sitecore 足够聪明,可以意识到这一点,不会渲染 Url。相反,它呈现当前 url,而不是 "currenturl/edit"。

问题在于,当未经身份验证的用户单击 link 时,我希望它将他们带到登录页面,一旦登录,它将把他们重定向到他们最初想要的受限页面。但是因为没有呈现正确的 url,所以不会调用此过程。

如何让它在不考虑权限的情况下呈现 Url?

是的,Sitecore 默认会这样做。我实际上 运行 不久前遇到了同样的情况: https://sdn.sitecore.net/SDN5/Forum/ShowPost.aspx?PostID=62876

我记得我最终覆盖了 SitecoreFieldLinkMapper 并更改了它:

if (linkField.TargetItem == null) link.Url = string.Empty;
else link.Url = LinkManager.GetItemUrl(linkField.TargetItem, urlOptions);

对此:

Item targetItem = null;
using (new SecurityDisabler())
{
    targetItem = linkField.TargetItem;
}

if (targetItem == null) link.Url = string.Empty;
else link.Url = LinkManager.GetItemUrl(targetItem, urlOptions);

当时我是 "fortunate" 架构师已将 Glass 的整个源代码包含到解决方案中。所以我只需要改变原来的映射器。但是如果我不得不再做一次,我会扩展原来的映射器并在启动时注册它。你可以在这里找到一个例子:http://glass.lu/Mapper/Sc/Tutorials/Tutorial19