gpt4 book ai didi

asp.net-mvc - Sitecore + Glass : Render link, 但忽略权限

转载 作者:行者123 更新时间:2023-12-04 05:43:36 33 4
gpt4 key购买 nike

我有以下几点:

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

其中 Link 是一个玻璃 Link 属性:
        public virtual Link Link { get; set; }

问题是目标页面仅限登录用户访问。似乎 glass/sitecore 足够聪明,可以意识到这一点,并且不会呈现 Url。相反,它呈现当前 url,而不是“currenturl/edit”。

问题在于,当未经身份验证的用户单击链接时,我希望它将他们带到登录页面,一旦登录,它就会将他们重定向到他们最初想要的受限页面。但是因为没有呈现正确的 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);

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

关于asp.net-mvc - Sitecore + Glass : Render link, 但忽略权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32524847/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com