2013-05-22 19 views
0

在我們基於sitecore的網站中,我們有自定義sitecore模塊供sitecore管理員使用。在每個模塊內部,我們進行憑證檢查以查看當前用戶是否爲sitecore用戶。Sitecore預覽功能將活動域名切換到外部網絡

using Sitecore.Security.Authentication; 

if (AuthenticationManager.GetActiveUser().Domain.Name != "sitecore") 
{ 
    //not permitted to use the admin module 
} 

此檢查允許管理員只要登錄到sitecore門戶即可使用自定義模塊。但問題是,每當他們使用sitecore「預覽」功能預覽某個項目時,當前活動用戶將被更改爲「extranet \ Anonymous」。從此之後,我們的自定義模塊認爲用戶不是sitecore管理員,並且拒絕訪問模塊。

如何克服這個問題?我們需要安全檢查我們的管理模塊以及預覽功能。

在此先感謝!

PS。在進一步調查時瞭解已知問題。 http://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/ReleaseNotes/KnownIssues%20Recommended/Users%20in%20Preview%20mode%20do%20not%20have%20access%20to%20restricted%20pages%20unless%20they%20log%20in%20on%20the%20website.aspx

+1

您使用哪個版本的Sitecore?在您檢查用戶域的頁面生命週期的哪個點上?我在我的項目中檢查過它,並且在預覽期間,我得到了** admin **用戶的「sitecore」域。 'Sitecore.Context.User.GetDomainName()'也會爲你返回外部網嗎?你確定'SecurityDisabler'沒有在代碼中用於預覽嗎? –

+0

感謝您試用Maras。我們正在使用Sitecore 6.6.0(修訂版120918)。我檢查Page_Load中的域。 'Sitecore.Context.User.GetDomainName()'也給出了相同的結果。不,我們不在公共網站上使用SecurityDisabler。 (我們偶爾會在定製代理中使用它) – ravinsp

回答

0

預覽應用程序在extranet \ anonymous用戶的上下文中瀏覽網站,通過隱藏安全內容等來顯示網站對網站訪問者的外觀/行爲。要執行您在模塊中使用的檢查,您可以使用Sitecore.Publishing.PreviewManager.GetShellUser()結合Sitecore.Context.PageMode來獲得您正在尋找的邏輯。

+0

感謝您的回答。 'Sitecore.Publishing.PreviewManager.GetShellUser()'僅在使用預覽功能之後才被填充(否則,即使sitecore用戶已經登錄,它也將爲空)。所以在我的模塊中,爲了檢查sirecore用戶是否已經登錄,我首先檢查'GetDomainName()',如果失敗,我也檢查PreviewManager.GetShellUser()。通過這種方式,我可以在預覽功能使用之前和之後涵蓋這兩種情況。 – ravinsp