0
votes

I'm trying to get a System.Web.Security.MembershipUser user so I can check it's lastPasswordChangedDate property, only problem is it's returning null.

I've had a look around and most of the similar problems seem to be because the user is not authenticated when trying to create the object. In my case the user is authenticated directly before calling the method, albeit in another class.

Any pointers?

PSEUDO-CODE FOLLOWS :

FrontEnd ----> Login.cs

string userName = txtUser.Text; string password = txtPW.Text;
wsAuth = new wsAuth();
wsAuthentication.Authenticate(userName,password);

Auth service ---->

public bool Authenticate(string userName, string password) 
{
SecurityProviderSettings settings = SecurityProviderSettings.GetFromConfiguration("SecurityProviders");
ProviderSetting providerSetting = settings.Providers[providerName];
object provider = Activator.CreateInstance(providerType);
return ((IAuthenticationProvider)provider).Authenticate(userName, password, providerSetting.CustomInfo, out failReason, out token);
}

Specific Provider ---->

public bool Authenticate(string userName, string password, out string failReason .....)
{
SqlMembershipProvider provider = new SqlMembershipProvider();

#region settings
//blablabla
#endregion 

provider.initialize(/*input vars*/);
bool authenticated = provider.ValidateUser(userName,password);
if(authenticated)
{
 pwValidator val = new pwValidator();
  if(!val.IsInLifetime(userName,password))
   {
     failReason = "password expired";
   }

}
}

PasswordValidator ---->

 public bool IsInLifetime(string userName, string password)
 {
MembershipUser user = Membership.GetUser(userName);
MembershipUser user2 = Membership.GetUser();
#bla bla bla
 }
1
it was quite a lot but I suppose it was necessary - Dani

1 Answers

0
votes

Try something like this. Create a method to get the user

        HttpContext httpContext = HttpContext.Current;
        if (httpContext != null && httpContext.User != null && httpContext.User.Identity.IsAuthenticated)
        {
            return Membership.GetUser();
        }