我正在寻找链接到 Sitecore客户端 (而非外部网站)中的项目的最佳方式。该链接将嵌入在损坏的链接报告电子邮件中。用户应该能够单击该链接并启动Sitecore内容编辑器,并在树中自动选择该项。
我在他的博客here上找到了Mark Ursino的解决方案,但遗憾的是,只有在您积极登录Sitecore时才会有效(否则,它会在您登录后将您带到Sitecore桌面)。
我正在运行Sitecore.NET 6.4.1(rev.110324)
更新
关闭Marko解决方案的循环:
public void Process(LoggedInArgs args)
{
string url = HttpUtility.UrlDecode(WebUtil.GetQueryString("url"));
// Ensure we're dealing with the client login site and there is a URL to redirect to
if (Sitecore.Context.GetSiteName() == "login" &&
!String.IsNullOrEmpty(url))
{
var queryString = WebUtil.ParseQueryString(url);
// Check for redirect param to prevent accidental redirections
if (queryString.ContainsKey("redirectAfterLogin"))
WebUtil.Redirect(url);
}
}
答案 0 :(得分:3)
您希望有一个页面,您所有的链接指向哪个处理登录,然后重定向到Sitecore。您需要在电子邮件中的链接的URL中添加一些查询字符串参数,例如:itemID和serialCode。我强烈建议,由于执行此类操作的安全隐患,您可以设置加密代码,该代码可以在未加密的链接中发送,并根据该特定报告的存储代码进行检查,以确保尝试登录的人是你发送电子邮件的人。检查代码后,您将访问可以存储在web.config中的低级用户凭据以自动登录。然后,您将使用itemID来确定要在内容编辑器中打开的项目。 (请注意,回避Sitecore的登录过程将打开您应该准备防范的安全漏洞)
另一个不太复杂且更安全的选项是通过电子邮件发送新报告的摘要和通知以及指向Sitecore登录页面的链接。然后在Sitecore中创建自定义应用程序以创建和查看这些报告。然后,电子邮件的预期收件人可以登录并使用此应用程序在收到通知后进行查看。它与日志查看器的工作方式类似。一旦进入Sitecore的桌面模式,他们就可以在内容编辑器和自定义应用程序之间切换,然后可以有一个指向所有项目的链接列表。这当然取决于您客户的灵活性。
答案 1 :(得分:2)
以下是我之前使用的内容:
sitecore web.config中有一个选项可以通过原始网址发送。设置使用此补丁文件
<setting name="Authentication.SaveRawUrl">
<patch:attribute name="value">true</patch:attribute>
</setting>
然后,我在CleanupUserProfile之后向登录处理器添加了一个额外的处理器,它读取查询字符串参数并重定向到适当的页面。无论用户之前是否登录过,都会每次调用此处理器。
我的自定义登录处理器的签名是
namespace [...]
{
public class LoginModeSwitcher
{
public void Process(LoggedInArgs args)
{
// your code here
}
}
}
这是我用于登录处理器的补丁配置:
<processors>
<loggedin>
<processor patch:after="*[@type='Sitecore.Pipelines.LoggedIn.CleanupUserProfile, Sitecore.Kernel']" mode="on" type="[...].LoginModeSwitcher, [ASSEMBLY]" />
</loggedin>
</processors>
电子邮件链接中的链接包含一个查询字符串参数,用于告诉我的代码我们要在登录后重定向以及其他查询字符串参数,以告诉它在哪里重定向用户。
答案 2 :(得分:0)
我认为到目前为止最简单的解决方案是简单地滚动您自己的登录页面。没有任何默认的Sitecore登录正在进行的操作,您无法在新页面中轻松完成...然后自动将用户重定向到内容编辑器中的相应项目。
这与mstiles第一个建议基本相同,减去自动登录过程。这只是一个等待发生的安全漏洞......不要这样做。