2012-03-19 11 views
5

私はASP.NETメンバーシップAPIを使用しています。ユーザーが初めてログインした後でパスワードを変更するように強制したいのですが、ASP.NETのメンバーシップAPIでそのような機能を組み込むことはできませんでした。
可能かどうかはいの場合、どのように簡単に行うことができますか?ASP.NETメンバーシップAPI強制パスワード変更

+1

http://forums.asp.net/p/1273575/2414481.aspx –

答えて

4

ビルドイン機能はありません。

自分で実装する必要があります。ここでは例です:ここでは、完全にテストされたソリューションですhttp://forums.asp.net/p/1273575/2414481.aspx

8

;)パスワードを変更する方法で助けを必要とする場合には

protected void LoginButton_Click(object sender, EventArgs e) 
{ 
    /****note: UserName and Password are textbox fields****/ 

    if (Membership.ValidateUser(UserName.Text, Password.Text)) 
    { 
     MembershipUser user = Membership.GetUser(UserName.Text); 
     if (user == null) 
     { 
      FailureText.Text = "Invalid username. Please try again."; 
      return; 
     } 
     if (user.IsLockedOut) 
      user.UnlockUser(); 

     /* this is the interesting part for you */ 
     if (user.LastPasswordChangedDate == user.CreationDate) //if true, that means user never changed their password before 
     { 
      //TODO: add your change password logic here 
     } 
    } 
} 

、私に知らせてください。

この記事はあなたのための任意の助けになるべき答え

以下
+1

LastPasswordChangedDateプロパティの代わりに、あなたはまた、(コメントのプロパティを使用することができますこれはちょうど自由形式の文字列です)、パスワードの変更ロジックがパスワードの変更日を中心に回転しない場合に備え、ユーザーはパスワードをリセットする必要があることを示します。 –

0

はVBでの解決策であるように、タグを付けてください。また、フォームの要素asp:Login ID="LoginUser"の読み取りと設定のためのFindControlも含まれています。

Protected Sub LoginButton_Click(sender As Object, e As EventArgs) 

    '***note: UserName and Password are textbox fields*** 
    Dim UserName As TextBox = DirectCast(LoginUser.FindControl("UserName"), TextBox) 
    Dim Password As TextBox = DirectCast(LoginUser.FindControl("Password"), TextBox) 
    Dim FailureText As Literal = DirectCast(LoginUser.FindControl("FailureText"), Literal) 

    If Membership.ValidateUser(UserName.Text, Password.Text) Then 
     Dim user As MembershipUser = Membership.GetUser(UserName.Text) 
     If user Is Nothing Then 
      FailureText.Text = "Invalid username. Please try again." 
      Return 
     End If 
     If user.IsLockedOut Then 
      user.UnlockUser() 
     End If 

     ' this is the interesting part for you 

     If user.LastPasswordChangedDate = user.CreationDate Then 
      'TODO: add your change password logic here 
     End If 
    End If 
End Sub 
0

これが私のやり方です。これは、ログイン後にそれを行う方が良いです。

protected void LoginUser_LoggedIn(object sender, EventArgs e) 
    { 

     if (Membership.ValidateUser(this.LoginUser.UserName, this.LoginUser.Password)) 
     { 
      MembershipUser user = Membership.GetUser(this.LoginUser.UserName); 
      if (user == null) 
      { 
       this.LoginUser.FailureText = "Invalid username. Please try again."; 
       return; 
      } 
      if (user.IsLockedOut) 
      { 
       user.UnlockUser(); 
      } 

      if (user.LastPasswordChangedDate == user.CreationDate) //if true, that means user never changed their password before 
      { 
       Response.Redirect("~/Account/ChangePassword.aspx"); 
      } 
     } 
    } 
関連する問題