1

カスタムメンバーシッププロバイダーを実装しました。私のコードのサンプルを以下に示します

public class CustomMembershipProvider : MembershipProvider
{
   public override bool ChangePassword(string username, string oldPassword, string newPassword)
   {
      //logic for changing password
   }

   public override bool ValidateUser(string username, string password)
   {
      //logic for validating user credentials
   }
}

次に、上記のカスタムメンバーシップをweb.configファイルに登録しました。

<membership defaultProvider="CustomMembershipProvider">
 <providers>
  <clear/>
   <add name ="CustomMembershipProvider" type="MyApplication.CustomMembershipProvider"/>
 </providers>
</membership>

これで、ユーザーを認証したいときに、電話をかけることができます

System.Web.Security.Membership.ValidateUser(username, password);

これは機能します。ただし、パスワードを変更するメソッドを呼び出したい場合は、次のように呼び出してみます。

System.Web.Security.Membership.ChangePassword(username, oldPassword, newPassword);

System.Web.Security.Membershipの定義が含まれていないというインテリセンスとコンパイルエラーが発生しChangePasswordます。

メソッドをリンクしてChangePassword呼び出し可能にする方法、System.Web.Security.Membershipまたはこの問題に間違った方法でアプローチする方法を教えてください。

4

2 に答える 2

4

メンバーシッププロバイダーが明確に定義されていることを確認してください。

<membership defaultProvider="CustomMembershipProvider">
  <providers>
    <clear />
    <add connectionStringName="ConnString" enablePasswordReset="true" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" name="CustomMembershipProvider" type="MyMembershipProvider" />
  </providers>
</membership>

私はそれをMyApplication.MyMembershipProviderあなたのカスタムメンバーシップクラスだと思います。後で読みやすくするために、名前を別の名前に変更しweb.configます。これを見ると、クラスが何であるかがわかります。

ただし、あなたの問題に対する答えは、Membership内のProviderクラスを利用する必要があると私は信じています。カスタムプロバイダーを定義したので、これを使用してカスタム変更の一部を実行します。

var didChange = System.Web.Security.Membership.Provider.ChangePassword("", "", "");
于 2012-07-18T15:08:38.230 に答える
0

WebSecurity.ChangePasswordのパラメーターのいずれかがnullの場合、カスタムメンバーシッププロバイダーのパスワード変更は呼び出されません。

于 2015-11-29T07:45:57.927 に答える