[英]After Sitecore login, Sitecore.Current.User.IsAuthenticated always returns false on redirect to another page
我在Sitecore中沒有經驗,但是我需要解決此問題:基本上,我們是通過ADFS登錄用戶,然后通過Sitecore創建虛擬用戶並登錄:
Sitecore.Security.Accounts.User user =
Sitecore.Security.Authentication.AuthenticationManager.BuildVirtualUser(@"extranet\" + membershipUser.LastName, true);
if (user != null)
{
string domainRole = @"extranet\externaluser";
if (Sitecore.Security.Accounts.Role.Exists(domainRole))
{
user.Roles.Add(Sitecore.Security.Accounts.Role.FromName(domainRole));
}
Sitecore.Security.UserProfile profile = user.Profile;
profile.FullName = membershipUser.FirstName + " " + membershipUser.LastName;
bool islogin = Sitecore.Security.Authentication.AuthenticationManager.LoginVirtualUser(user);
AuthenticationManager.Login(user.Name,true );
profile.Save();
}
此時,如果我檢查Sitecore.Current.User.IsAuthenticated
,它將返回true。 如果我導航到另一個頁面,則Sitecore.Current.User.IsAuthenticated
返回false。 目前,我們尚未將任何人注銷。
任何想法為什么會發生這種情況?
現在已解決:我不得不更改
<add name="SessionAuthenticationModule"
type="System.IdentityModel.Services.SessionAuthenticationModule,
System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
至
<add name="SessionAuthenticationModule"
type="ADFS.Authenticator.Authentication.WsSessionAuthenticationModule,
ADFS.Authenticator" />
這就是我的做法。 您在使用MVC嗎?
嘗試檢查Sitecore.Context.User而不是Current。
public bool ValidateUser(string userName, string password)
{
var domainUser = _domain.Name + @"\" + userName;
try
{
var user = Business.Authenticate(userName, password);
if (user == null) return false;
var scuser = AuthenticationManager.BuildVirtualUser(domainUser, true);
if (scuser != null)
{
AuthenticationManager.Login(scuser);
scuser.RuntimeSettings.AddedRoles.Add(Constants.UserRole);
scuser.Profile.SetCustomProperty(Constants.UserEmail, user.Email);
scuser.Profile.SetCustomProperty(Constants.UserId, user.UserId);
return true;
}
}
catch (Exception ex)
{
Diagnostics.Logger.Error(ex.Message);
return false;
}
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.