2

我有一个宏,可以检测访问者是否来自 Facebook,以及该访问者是否是该 facebook 页面上的管理员。

当我检测到管理员时,我运行以下代码以将访问者作为预定义管理员(Umbraco 后端用户)登录并重定向到实时编辑模式。这在 Chrome 中完美运行,但在 Internet Explorer 中不起作用。在 Internet Explorer 中,访问者在顶层(iframe 之外)被重定向到 Umbraco 登录页面,而不是登录。知道为什么吗?

var id = umbraco.BusinessLogic.User.getUserId("exampleadminuser"); // LoginName of an administrator
var u = umbraco.BusinessLogic.User.GetUser(id);
umbraco.BasePages.BasePage.doLogin(u);

// Check if the user should be redirected to live editing
if (u.DefaultToLiveEditing)
{

    int startNode = u.StartNodeId;

    // If the startnode is -1 (access to all content), we'll redirect to the top root node
    if (startNode == -1)
    {
        if (umbraco.cms.businesslogic.web.Document.GetRootDocuments().Length > 0)
            {
            startNode = umbraco.cms.businesslogic.web.Document.GetRootDocuments()[0].Id;
        }
        else
        {
            throw new Exception("There's currently no content to edit. Please contact your system administrator");
        }
    }

    string redir = String.Format("{0}/canvas.aspx?redir=/{1}.aspx", GlobalSettings.Path, startNode);
    Response.Redirect(redir, true);
}
4

1 回答 1

0

众所周知,canvas.aspx 功能不可靠且受补丁支持,因此如果一个浏览器的反应不同也就不足为奇了。在我的 2 级 Umbraco 证书课程中,导师和房间里的每个人都同意它还没有准备好生产。

我无法完全复制您的问题,但在最新版本的 Chrome、Firefox 和 IE9 中登录后台时,Chrome 是奇怪的——IE9 和 Firefox 的反应方式相同。对我来说奇怪的是 Chrome 是唯一一个工作的。

我正在登录 umbraco,然后在每个实例中使用 url 启动另一个选项卡:

<..域..>/canvas.aspx?redir=/pagename/

(我的网站将 umbracoUseDirectoryUrls 键设置为 true,因此 .aspx 格式被尾部斜杠替换)。

所以我的回答是 canvas.aspx 不可靠,因此我会将管理员登录到标准的 /umbraco/ 后台而不是信任 canvas.aspx。

于 2013-04-22T09:20:24.180 回答