0

System.Web.Security.MembershipUserユーザーを取得しようとしているので、lastPasswordChangedDateプロパティを確認できますが、問題はnullが返されることだけです。

私は周りを見回しましたが、同様の問題のほとんどは、オブジェクトを作成しようとしたときにユーザーが認証されていないことが原因のようです。私の場合、別のクラスではありますが、ユーザーはメソッドを呼び出す直前に認証されます。

ポインタはありますか?

擬似コードは次のとおりです:

フロントエンド---->Login.cs

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

認証サービス---->

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);
}

特定のプロバイダー---->

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
 }
4

1 に答える 1

0

このようなことを試してください。ユーザーを取得するメソッドを作成する

        HttpContext httpContext = HttpContext.Current;
        if (httpContext != null && httpContext.User != null && httpContext.User.Identity.IsAuthenticated)
        {
            return Membership.GetUser();
        }
于 2012-07-11T14:24:58.143 に答える