• 摆脱Login控件,自己定义登录操作


    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
    //在登录过程中,程序自动使用login.aspx进行拦截
    //验证用户通过后,自动返回拦截的位置
    if (Membership.ValidateUser(this.TextBox1.Text, this.TextBox2.Text))
    {
    this.Session["xh"] = this.TextBox1.Text;
    FormsAuthentication.RedirectFromLoginPage(this.TextBox1.Text, false);

    }
    }

     

    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;

            }

     
     
     

     

    来自: glxym > 《asp.net》

    以文找文   |   举报
  • 相关阅读:
    Andrew Ng机器学习算法入门((七):特征选择和多项式回归
    Andrew Ng机器学习算法入门((六):多变量线性回归方程求解
    Andrew Ng机器学习算法入门((五):矩阵和向量
    Linux常用命令集锦
    Andrew Ng机器学习算法入门(四):阶梯下降算法
    AZscaaner源码解读之数据库连接(一)
    Andrew Ng机器学习算法入门(三):线性回归算法
    Andrew Ng机器学习算法入门(二):机器学习分类
    MapServer
    fetch.js
  • 原文地址:https://www.cnblogs.com/qqhfeng/p/7561665.html
Copyright © 2020-2023  润新知