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;

        }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值