Trying to get the current logged in Sitefinity user - General Discussions - General Discussions - Progress Community
 General Discussions

Trying to get the current logged in Sitefinity user

  • Trying to get the current logged in Sitefinity user
  • Hi, can anyone help?

    I’m trying to get the current logged in Sitefinity user, but no matter what I try I am not getting the user. This is for a custom module that executes on BeginRequest:

     

                  public void Init(HttpApplication context)

                 

                         context.BeginRequest += context_BeginRequest;

                 

                  void context_BeginRequest(object sender, EventArgs e)

                 

                         var context = ((HttpApplication)sender).Context;

                         var user = context.User; // <-- Null

                         var sUser = SecurityManager.GetCurrentUser(); // return anonymous user

                         var cUser = ClaimsManager.GetCurrentIdentity(); // returns anonymous identity

                 

    I am currently logged into Sitefinity as the admin user, but no matter what, each of the users above do not show me as that user. Using the regular returns null, while both the SecurityManager and ClaimsManager return empty anonymous users.

    The site is set to use Claims authentication, what else do I need to do to get the current logged in user?

    Thanks in advance 

    Darren

  • Hi,

    Here is an example function that I use to get the current users identity.  If the current user is logged in it will show there first and last name, otherwise it displays Anonymous User.

    private static string GetCurrentSitefinityUser()
                 
                var identity = ClaimsManager.GetCurrentIdentity();
                var currentUserGuid = identity.UserId;
                 
                if (currentUserGuid != Guid.Empty)
                    UserProfileManager profileManager = UserProfileManager.GetManager();
                    UserManager userManager = UserManager.GetManager("Default");
                    User user = userManager.GetUser(currentUserGuid);
     
                    SitefinityProfile profile = null;
     
                    if (user != null)
                        profile = profileManager.GetUserProfile<SitefinityProfile>(user);
                    
     
                    return profile.FirstName + " " + profile.LastName;
     
                 else
                    return "Anonymous User";
                
            

    Thanks,

    Randy

  • Hi Randy,

    Thanks for the reply but the ClaimsManager is returning an anonymous user no matter what.
    It appears perhaps there might be a bug when calling these methods from an HttpModule?
    or do you know if there’s a different method or global event I should be using to make this work?

    Darren
  • the problem appears to be related to the application event you're intercepting. BeginRequest is too early in the lifecycle to populate the claims authentication information.

    Try running your code in a later event (Such as PostAcquireRequestState) and see if that allows you to get the user data you need.

    Hope this is helpful!
  • Do you have a reference where I can find a list of these events? 

    I tried the one you mentioned in 6.3.5000 and it's never called (or breaked on)