Sitecore 7.5 |使用虚拟用户登录

Sitecore 7.5 |使用虚拟用户登录,sitecore,virtual,Sitecore,Virtual,我试图在Sitecore中实现虚拟用户,并做了一个小型POC,以了解虚拟用户是如何工作的 我试图浏览URL作为 8A5DF7E70EF9%7d&Log=true 在UserResolver之后的HttpRequestBegin管道中,我有以下处理器,代码如下: System.Web.HttpRequest Request = HttpContext.Current.Request; if (Request.QueryString["Log"] != null &&

我试图在Sitecore中实现虚拟用户,并做了一个小型POC,以了解虚拟用户是如何工作的

我试图浏览URL作为

8A5DF7E70EF9%7d&Log=true

在UserResolver之后的HttpRequestBegin管道中,我有以下处理器,代码如下:

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;
            }
        }
在这里,我正在构建一个虚拟用户,并尝试以这个虚拟用户的身份登录。但在这里,它总是将我重定向到登录页面,而不是登录

DEA5-42EA-9C1C-8A5DF7E70EF9%7d&la=en&fo=%7b110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9%7d&Log=true

但是,当我试图通过如下自定义页面的帮助实现相同的目标时

我刚刚创建了一个自定义页面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);

        }
在这里,我什么也不做,只是重定向到内容编辑器,当我浏览时,我可以使用我创建的testadmin用户登录到内容编辑器。有人能告诉我吗

告诉我为什么会这样

在我浏览网站的方法中 在用户解析程序中,解析的用户将是extranet\Anonymous,然后点击Something.aspx的PageLoad,而不会点击我的自定义处理器(我通过不在Something.aspx的PageLoad中传递Log=true和只在Something.aspx的PageLoad中传递this Log=true进行控制)和重定向时,UserResolver中的用户是sitecore\Anonymous,然后它点击我的自定义处理器并创建虚拟用户,而shell站点将不会重定向到登录站点,而是打开内容编辑器。 sitecore\Anonymous--重定向后以虚拟用户身份登录

其中,与我直接浏览内容编辑器的方法一样,最初解析的用户将是sitecore\Anonymous,然后它点击我的自定义处理器并创建虚拟用户,shell站点将重定向到登录站点


知道为什么会发生这种情况吗?

当您从
http://somesite/Something.aspx
,您是否已清除Cookie/缓存?如果您在私人浏览模式/不同浏览器中浏览,它是否有效?@jammykam:是的,我尝试过。它在私人浏览模式下以及在不同浏览器中都有效。@jammykam:我只是尝试分解内容编辑器的代码,令人惊讶的是,我发现scUser.RuntimeSettings.isvirtualser在直接浏览内容编辑器时为false,这就是页面被重定向到登录页面的原因。但是当我浏览through属性时,where as为true并显示为Content Editor。您知道如何更改此属性以及在何处更改此属性吗?