我试图在Sitecore中实施虚拟用户,并做了一个小POC来了解虚拟用户的工作方式。
我尝试将网址浏览为
8A5DF7E70EF9%7D&安培;登录=真
在HttpRequestBegin UserResolver之后的管道中,我有下面的处理器代码为:
System.Web.HttpRequest Request = HttpContext.Current.Request;
if (Request.QueryString["Log"] != null && Request.QueryString["Log"].ToString() == "true")
{
//Build Virtual user if the Sitecore User is not authenticated
if (!user.IsAuthenticated)
{
try
{
//Build a testuser in sitecore domain
string userId = string.Format("{0}\\{1}", "extranet", "testadmin");
var scUser = AuthenticationManager.BuildVirtualUser(userId, true);
scUser.Profile.Initialize(userId, true);
scUser.Profile.Save();
scUser.RuntimeSettings.IsAdministrator = true;
scUser.RuntimeSettings.AddedRoles.Add(@"sitecore\Sitecore Client Authoring");
AuthenticationManager.Login(scUser);
}
catch (Exception ex)
{
Log.Error(ex.Message, this);
}
return;
}
}
这里我正在构建一个虚拟用户并尝试以此虚拟用户身份登录。但此处不是登录,而是始终将我重定向到http://somesite/sitecore/login?id=%7b110D559F-
的登录页面DEA5-42EA-9C1C-8A5DF7E70EF9%7D&安培; LA = EN&安培; FO =%7b110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9%7D&安培;登录=真
但是当我尝试在下面的自定义页面的帮助下实现相同的目标时
我刚创建了一个自定义页面Something.aspx,代码如下:
protected void Page_Load(object sender, EventArgs e)
{
string url = "/sitecore/shell/sitecore/content/Applications/Content Editor.aspx?id=%7b110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9%7d&la=en&fo=%7b110D559F-DEA5-42EA-9C1C-
8A5DF7E70EF9%7d&Log=true";
url = string.IsNullOrEmpty(url) ? "/" : url;
HttpContext.Current.Response.Redirect(url, false);
}
这里我什么也没做,只是重定向到内容编辑器,当我浏览http://somesite/Something.aspx时,我能够使用我创建的testadmin用户登录内容编辑器吗?。任何人都可以告诉
我为什么会这样?
在我浏览网站{/ 3}}的方法中 在用户解析器中,解析的用户将是extranet \ Anonymous,然后点击Something.aspx的PageLoad并且没有点击我的自定义处理器(我通过不传递Log = true来控制它,并且仅在页面加载中传递此Log = true .aspx)和重定向,UserResolver中的用户是sitecore \ Anonymous,然后它命中我的自定义处理器并创建虚拟用户和shell网站将不会重定向到登录站点而是打开内容编辑器。 sitecore \ Anonymous - 重定向,然后以虚拟用户身份登录
在我直接浏览内容编辑器的方法中,最初用户解析将是sitecore \ Anonymous然后它命中我的自定义处理器并创建虚拟用户并且shell站点将重定向到登录站点。
任何想法为什么会这样?