Membership用法

Membership用法詳解


用戶與角色管理在asp.net2.0中是通過Membership和Roles兩個類來實現的。

Membership:用戶成員賬號管理,用戶名、密碼、郵箱等

Roles:負責用戶和羣組之間關係管理。

l           Membership類:主要是創建用戶帳號、驗證用戶身份和管理用戶設置

屬性:

1)          EnablePasswordReset:獲取一個值,以指示是否可以重置密碼。

2)          EnablePasswordRetrieval:獲取一個值,以指示是否允許用戶提取密碼。

3)          HashAlgorithmType:獲取一個值,密碼的算法識別項

4)          MaxInvalidPasswordAttempts:獲取一個值,鎖定用戶之間所允許的重試次數。

5)          MinRequiredNonAlphanumericCharacters:獲取一個值,密碼中最少的特殊字符數。

6)          MinRequiredPasswordLength:取得最小密碼的長度

7)          RequiresQuestionAndAnswer:獲取一個值,指示是否要求用戶解答密碼問題以重新提取密碼。

8)          UserIsOnlineTimeWindow:指定用戶最後活動日期之後的分鐘數,其間的用戶視爲在線。

方法

1)          CreateUser():創建新的用戶

2)          DeleteUser():從數據庫刪除用戶

3)          GetUser():取得成員資格用戶的信息

4)          UpdateUser():更新用戶信息

5)          ValidateUser():驗證用戶賬號與密碼是否用效

6)          GetAllUsers():取得數據庫中用戶的集合

7)          FindUsersByEmail():根據email查詢用戶

8)          FinndUsersByName():根據帳號名稱查詢用戶

9)          GetNumberOfUsersOnline():取得目前訪問程序的在線用戶

10)       GetUserNameByEmail():根據郵箱查詢用戶名

l           MembershipUser類

負責管理與更新Membership表中的相關資料。別把MembershipUser類與Membership類混了,實際上是同MembershipUser處理完成後交由Membership處理。如:

1)          取得或設置用戶相關信息。如UserName,Email和帳號創建時間。

2)          讀取、改變用戶密碼

3)          改變密碼提示問題與答案

4)          解鎖帳號

5)          設置是否允許用戶能夠被驗證

屬性:

1)          CreationDate:取得用戶的創建時間

2)          Email:取得或設置用戶的電子郵件地址

3)          IsApproved:取得或設置用戶是否可以進行驗證

4)          IsLockedOut:取出用戶是否被鎖定

5)          IsOnLine:指出用戶目前是否在線

6)          LastActivityDate:取得或設置用戶最後一次驗證或訪問程序的日期時間

7)          LastLoclkoutDate:取是最近鎖定用戶的日期和時間

8)          LastLoginDate:取得或設置用戶上一次驗證的日期時間

9)          LastPasswordChangedDate:取得用戶密碼上一次更新的時間

10)       PasswordQuestion:取得用戶的安全密碼的問題

11)       UserName:取得用戶登錄的名稱

方法:

12)       ChangePassword():更改用戶密碼

13)       ChangePasswordQuestionAndAnswer:更改用戶的密碼安全問題和解答

14)       GetPassword():取得用戶密碼

15)       ResetPassword():將用戶的密碼重置,並自動產生新密碼

16)       UnlockUser():解除帳號鎖定,以便能進行身份驗證


l           Roles類

方法:

1)          AddUsersToRole():將多個用戶加入一個角色

2)          AddUsersToRoles():將多個用戶加入多個角色

3)          AddUserToRole():將一個用戶加入一個角色

4)          AddUserToRoles():將一個用戶加入多個角色

5)          CreateRole():創建角色

6)          DeleteRole():刪除角色

7)          FindUsersInRole():尋找某個角色中的所有用戶

8)          GetAllRoles():取得所有角色的清單

9)          GetRolesForUser():取得用戶所屬角色的清單

10)       IsUserInRole():指出用戶是否在指定的角色中

11)       RemoveUserFromRole():從一個角色中移除一個用戶

12)       RemoveUserFromRoles():從多個角色中移出一個用戶

13)       RemoveUsersFromRole():從一個角色中移除多個用戶

14)       RemoveUsersFromRoles():從多個角色中移除多個用戶名

15)       RoleExists():用戶角色名是否已存在於角色表中。

代碼實現(1)

創建用戶:

MembershipCreateStatus mc;

Membership.CreateUser(txtUid.Text, txtPwd.Text, txtEmail.Text, txtQuestion.Text, txtAnswer.Text, true, out mc);

Response.Write(mc.ToString());

刪除用戶:

if (Membership.DeleteUser(txtUid.Text))

      Response.Write("OK");

else

Response.Write("Error");

修改用戶信息:

if (User.Identity.IsAuthenticated)

{

      MembershipUser user = Membership.GetUser();

      user.Email = txtEmail.Text;

      Membership.UpdateUser(user);

      Response.Write(user.Email.ToString());

}

驗證用戶登錄信息

bool isok = Membership.ValidateUser(txtUid.Text, txtPwd.Text);

if (isok)

{

      FormsAuthentication.SetAuthCookie(txtUid.Text, false);

      Response.Write("OK");

}

else

{

      Response.Write("Error");

}

獲取登錄用戶的信息

if (User.Identity.IsAuthenticated)

{

      MembershipUser myuser = Membership.GetUser();

      if (myuser != null)

      {

 Response.Write(myuser.CreationDate);

 Response.Write(myuser.Email);

 Response.Write(myuser.IsLockedOut);

 Response.Write(myuser.IsOnline);

 Response.Write(myuser.PasswordQuestion);

 Response.Write(myuser.UserName);

       }

}

根據密碼問題的答案返回用戶密碼

if (User.Identity.IsAuthenticated)

{

      MembershipUser user = Membership.GetUser(txtUid.Text);

      txtPwd.Text = user.GetPassword(txtAnswer.Text);

}

修改用戶密碼

if (User.Identity.IsAuthenticated)

{

      MembershipUser user = Membership.GetUser();

      user.ChangePassword(txtPwd.Text,txtPWd2.Text);

      Response.Write(user.GetPassword(txtAnswer.Text));

}

解鎖用戶

MembershipUser user = Membership.GetUser(txtUid.Text);

bool b = user.UnlockUser();

Response.Write(b+" "+user.IsLockedOut);

拒絕用戶登錄

MembershipUser user = Membership.GetUser(txtUid.Text);

user.IsApproved = false;

Membership.UpdateUser(user);

Response.Write(user.IsLockedOut);

允許用戶登錄

MembershipUser user = Membership.GetUser(txtUid.Text);

user.IsApproved = true;

Membership.UpdateUser(user);

Response.Write(user.IsLockedOut);

根據用戶名或郵箱來檢索用戶

 MembershipUserCollection users;

 switch(listType.Text)

 {

  case    "姓名":

  users = Membership.FindUsersByName(txtFind.Text);

  if (users.Count > 0)

  {

        showUserInfo(users);

  }

  else

  {

        Response.Write("未找到用戶名");

  }

  break;

  case    "郵箱":

  users = Membership.FindUsersByEmail(txtFind.Text);

  if (users.Count > 0)

  {

        showUserInfo(users);

  }

  else

  {

        Response.Write("未找到郵箱");

  }

  break;

 }

代碼實現(2)

加載所有用戶

MembershipUserCollection user = Membership.GetAllUsers();

listUser.DataSource = user;

listUser.DataBind();

加載所有角色

string[] role = Roles.GetAllRoles();

listRole.DataSource = role;

listRole.DataBind();

添加新角色

Roles.CreateRole(txtRole.Text);

刪除角色

Roles.DeleteRole(txtRole.Text);

將一個用戶添加到一個角色

Roles.AddUserToRole(listUser.Text, listRole.Text);

將一個用戶從一個角色中移除

Roles.RemoveUserFromRole(listUser.Text, listRole.Text);

將一個用戶加入到多個角色中去

          int n = 0;

          foreach (ListItem li in listRole.Items)

          {

              if (li.Selected) n++;

          }

          string[] roles = new string[n];

          int i=0;

          foreach(ListItem li in listRole.Items)

          {

              if(li.Selected)

              {

                  roles[i++] = li.Text;

              }

          }

          Roles.AddUserToRoles(listUser.Text, roles);

將一個用戶的所有角色移除

string[] str = Roles.GetRolesForUser(listUser.Text);

Roles.RemoveUserFromRoles(listUser.Text,str);

將多個用戶加入到一個角色中去

          int n = 0;

          foreach (ListItem li in listUser.Items)

          {

              if (li.Selected) n++;

          }

          string[] users = new string[n];

          int i=0;

          foreach (ListItem li in listUser.Items)

          {

              if (li.Selected)

              {

                  users[i++] = li.Text;

              }

          }

          Roles.AddUsersToRole(users,listRole.Text);

將一個角色中的所有的用戶移除

string[] users = Roles.GetUsersInRole(listRole.Text);

Roles.RemoveUsersFromRole(users, listRole.Text);

將多個用戶加入到多個角色

          int n = 0;

          foreach (ListItem li in listUser.Items)

          {

              if (li.Selected) n++;

          }

          string[] strUser = new string[n];

          n = 0;

          foreach (ListItem li in listRole.Items)

          {

              if (li.Selected) n++;

          }

          string[] strRoles = new string[n];

          for (int i = 0; i < listUser.Items.Count; i++)

          {

              strUser[i] = listUser.Items[i].Text;

          }

          for (int i = 0; i < listRole.Items.Count; i++)

          {

              strRoles[i] = listRole.Items[i].Text;

          }

          Roles.AddUsersToRoles(strUser, strRoles);

 

 

1.創建用戶...

        string userName = txtUsername.Text;
        string passWord = txtPassword.Text;
        string email = txtEmail.Text;
        string passwordQuestion = ddlPasswordQuestion.SelectedValue;
        string passwordAnswer = txtPasswordAnswer.Text;
        MembershipCreateStatus result;
        // 創建一個用戶       
        Membership.CreateUser(userName, passWord, email, passwordQuestion, passwordAnswer, true, out result);
        //顯示創建結果,並做後期處理
        lblResults.Visible = true;
        switch (result)
        {
            case MembershipCreateStatus.Success:
                txtUsername.Text = "";
                txtPassword.Text = "";
                txtEmail.Text = "";
                ddlPasswordQuestion.SelectedIndex = -1;
                txtPasswordAnswer.Text = "";
                lblResults.Text = "新用戶創建成功.";
                break;
            case MembershipCreateStatus.InvalidUserName:
                lblResults.Text = "無效的用戶名.";
                break;
            case MembershipCreateStatus.DuplicateEmail:
                lblResults.Text = "重複的電子郵件地址.";
                break;
            case MembershipCreateStatus.InvalidQuestion:
                lblResults.Text = "無效的密碼問題.";
                break;
            case MembershipCreateStatus.DuplicateUserName:
                lblResults.Text = "重複的用戶名.";
                break;
            case MembershipCreateStatus.InvalidAnswer:
                lblResults.Text = "無效的密碼答案";
                break;
            case MembershipCreateStatus.InvalidEmail:
                lblResults.Text = "無效的電子郵件地址";
                break;
            case MembershipCreateStatus.InvalidPassword:
                lblResults.Text = "無效的密碼";
                break;
            default:
                lblResults.Text = "在創建用戶過程中發生錯誤.";
                break;

        }

發佈了58 篇原創文章 · 獲贊 3 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章