2013-07-31 88 views
2

我有一個sitecore設置與一個前端登錄頁面外網用戶訪問網站內的受限制頁面。sitecore用戶域和角色返回null

外網用戶,目前正在登錄時使用的持久性標誌等於TURE

global::Sitecore.Security.Domains.Domain domain = global::Sitecore.Context.Domain; 
var isLogginedIn = AuthenticationManager.Login(domain + @"\" + email, password, true); 

這工作成功和上下文是否設置正確。

下面是在同一請求中登錄後立即窗口輸出。

global::Sitecore.Context.User.Domain 
extranet 

global::Sitecore.Context.User.Roles.Count() 
1 

global::Sitecore.Context.User.IsAuthenticated() 
true 

用戶登錄後,用戶被重定向到他們想要訪問的頁面。

下面是輸出窗體上的任何後續請求

global::Sitecore.Context.User.Domain 
null 

global::Sitecore.Context.User.Roles.Count() 
0 

global::Sitecore.Context.User.IsAuthenticated() 
true 

任何人有,爲什麼我可能會失去在後續請求一些背景項目的任何想法立即窗口?

在此先感謝

回答

0

它看起來像你想創建Sitecore的自己的登錄頁面。在這種情況下,你可以嘗試啓動logginging管道,而不是調用AuthenticationManager.Login方法:

var loggingInArgs = new LoggingInArgs 
{ 
    Username = userName, 
    Password = password, 
    StartUrl = startUrl 
}; 

Pipeline.Start("loggingin", loggingInArgs); 
bool isLogginedIn = loggingInArgs.Success; 
+0

感謝您的快速響應,但我無法使用該方法登錄。 我收到以下消息: '您無權訪問系統。如果您認爲這是錯誤的,請聯繫系統管理員。\ n \ n您的登錄嘗試不成功。請重試。\ n \ n您無權訪問系統。如果您認爲這是錯誤的,請聯繫系統管理員。\ n \ n' 據我瞭解,管道登錄僅用於後端訪問。這是extranet域上的網站用戶的登錄頁面。 – Grazerbeam

0

這更是一個補丁來掩蓋這一問題,而不是一個妥善的解決辦法,但我將張貼任何人只是在情況下,它會觸發任何人都可以對此有任何進一步的想法。

我是一個自定義管道時調用以下代碼

if (user.Domain == null && user.IsAuthenticated) 
{ 
    var domainUser = string.Format(@"extranet\{0}", user.LocalName); 
    var membershipUser = Membership.GetUser(domainUser); 

    if (membershipUser != null) 
    { 
     AuthenticationManager.Login(domainUser, membershipUser.GetPassword(), true); 
    } 
} 

後,這就是所謂的用戶域和角色設置正確。奇怪的是,在此之後的所有其他請求都有正確設置的用戶。

0

我有這個確切的問題,其中域爲空,角色爲空。 原因是我用一個asp:Login控件登錄用戶。當我用標準的文本,密碼和按鈕控件替換它時,問題消失了。