2013-03-06 19 views
1

爲什麼AuthenticationManager.Login不會更改Sitecore.Context.User它始終是匿名?爲什麼Sitecore虛擬用戶不能更改Sitecore.Context.User?

string userName = string.Format("{0}\\{1}", "extranet", "Login");  
      Sitecore.Security.Accounts.User virtualUser = SC.Security.Authentication.AuthenticationManager.BuildVirtualUser(userName, isAuthenticated); 

Sitecore.Security.Authentication.AuthenticationManager.Login(virtualUser.Name); 

或者這是正確的行爲? Sitecore在這種情況下如何訪問頁面? 謝謝。

+1

嘗試使用Sitecore.Security.Authentication.AuthenticationManager.GetActiveUser()來檢索登錄用戶。 – 2013-03-06 15:19:34

回答

4

AuthenticationManager.Login()應更改上下文用戶。

您確定用戶登錄?

您可以檢查AuthenticationManager.Login()的結果值。如果用戶已登錄,它將返回true,否則您仍會看到匿名用戶。

這裏的如何創建虛擬用戶,角色分配給它,並記錄在一個示例代碼:

Sitecore.Security.Accounts.User user = Sitecore.Security.Authentication 
.AuthenticationManager.BuildVirtualUser(@"domain\user",true); 

if(user!=null) 
{ 
    string domainRole = @"domain\role"; 

    if(Sitecore.Security.Accounts.Role.Exists(domainRole)) 
    { 
    user.Roles.Add(Sitecore.Security.Accounts.Role.FromName(domainRole)); 
    } 

    Sitecore.Security.UserProfile profile = user.Profile; 
    profile.FullName = "full name"; 
    profile.Save(); 
    Sitecore.Security.Authentication.AuthenticationManager.Login(user.Name); 
} 
+0

我不知道爲什麼,但登錄(user.Name)dosn't工作它的工作情況下,它發送完整的Sitecore.Security.Accounts.User對象。 – 2013-03-07 07:56:43

+0

確實有一個以Sitecore.Security.Accuonts.User對象爲參數的重疊方法Sitecore.Security.Authentication.AuthenticationManager.Login(User)。 – 2013-03-07 08:40:09

+0

是的,這是我試圖在我的評論中說。謝謝 – 2013-03-07 08:43:46

相關問題