簡體   English   中英

登錄Sitecore后,Sitecore.Current.User.IsAuthenticated在重定向到另一個頁面時始終返回false

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM