ASP.NET 成员资格 Part.5(Membership 类)

       使用底层的成员资格编程接口可以执行下面的基本操作:

  • 创建新用户
  • 删除已存在的用户
  • 更新已存在的用户
  • 获得用户列表
  • 获得某用户的详细信息
  • 对存储验证用户凭证

       这个底层接口供此系列所介绍过的所有控件以及整个成员资格 API 架构使用。它包含了:

  • Membership 类:拥有若干属性和方法。很多方法接收一个 MembershipUser 的实例作为参数,或者返回一个或一组 MembershipUser 实例
  • MembershipUser 类:包含一个单独用户的所有属性。

       Membership 和 MembershipUser 在应用程序和实际的提供程序之间提供了必需的抽象层。Membership 类做的一切都和提供程序无关,也就是说,修改底层的成员资格提供程序,且新的提供程序的实现是完整的支持 MembershipProvider 基类所提供的所有功能,那么应用程序就不会受影响。

 

1. 从存储中获得用户

       通过 Membership 类从成员资格存储中获得一个单独用户和用户列表并绑定到网格上:

<asp:GridView ID="GridView1" runat="server" DataKeyNames="UserName" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="UserName" HeaderText="Username" />
        <asp:BoundField DataField="Email" HeaderText="Email" />
        <asp:BoundField DataField="CreationDate" HeaderText="Creation Date" />
        <asp:CommandField ShowSelectButton="true" />
    </Columns>
</asp:GridView>

       GridView 将 UserName 字段定义为 DataKeyNames,这样就通过网格的 SelectedValue 属性直接获得当前选中用户的 UserName 值。这很有用,因为大多数的方法都需要用户名来获得更多的信息。

       隐藏代码文件中开始编写代码绑定用户群:

MembershipUserCollection users = null;
 
protected void Page_Load(object sender, EventArgs e)
{
    users = Membership.GetAllUsers();
    GridView1.DataSource = users;
 
    if (!this.IsPostBack)
    {
        GridView1.DataBind();
    }
}

image

       这非常简单。如果你还想显示某个选中用户的详细信息,只需在先前页面上添加几个控件来显示选中用户的内容即可:

Selected User:<br />
<table border="1" bordercolor="blue">
    <tr>
        <td>UserName:</td><td><asp:Label ID="lblUserName" runat="server" /></td>
        <td>Email:</td><td><asp:Label ID="lblEmail" runat="server" /></td>
    </tr>
    <tr>
        <td>Password Question:</td><td><asp:Label ID="lvlPwdQuestion" runat="server" /></td>
        <td>Last Login Date:</td><td><asp:Label ID="lblLastLogin" runat="server" /></td>
    </tr>
    <tr>
        <td colspan="2"><asp:CheckBox ID="chkIsApproved" runat="server" Text="Approved" /></td>
        <td colspan="2"><asp:CheckBox ID="chkIsLockedOut" runat="server" Text="Locked Out" /></td>
    </tr>
</table>
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (GridView1.SelectedIndex >= 0)
    {
        MembershipUser current = users[GridView1.SelectedValue.ToString()];
 
        lblUserName.Text = current.UserName;
        lblPwdQuestion.Text = current.PasswordQuestion;
        lblLastLogin.Text = current.LastLoginDate.ToShortDateString();
        lblEmail.Text = current.Email;
        chkIsApproved.Checked = current.IsApproved;
        chkIsLockedOut.Checked = current.IsLockedOut;
    }
}

image

       MembershipUserCollection 对象需要通过用户名来直接访问用户。Membership 的 GetUser() 也需要用户名。因此,用 UserName 字段作为 GridView 控件的 DataKeyNames 属性的内容。

 

2. 更新存储中的用户

       一旦有了用户实例,执行更新用户信息也是非常的简单。在页面上合适处添加一个按钮,执行下列处理程序:

protected void btnUpdate_Click(object sender, EventArgs e)
{
    if (GridView1.SelectedIndex>0)
    {
        MembershipUser current = users[GridView1.SelectedValue.ToString()];
 
        current.Email = txtEmail.Text;
        current.IsApproved = chkIsApproved.Checked;
 
        Membership.UpdateUser(current);
        GridView1.DataBind();
    }
}

 

3. 创建和删除用户

       创建用户的界面设计这里就不再啰嗦了。执行程序可以向下面这样:

protected void btnCreateUser_Click(object sender, EventArgs e)
{
    try
    {
        // MembershipCreateStatus: 描述 Membership.CreateUser() 操作的结果
        // 这是一个枚举,有多种状态值
        MembershipCreateStatus status;
 
        Membership.CreateUser(
            txtUserName.Text,
            txtEmail.Text,
            txtPwd.Text,
            txtPwdQuestion.Text,
            txtAnswer.Text,
            true,
            out status);
        lblStatus.Text = "User created successfully!";
    }
    catch (Exception ex)
    {
        Debug.WriteLine("Exception: " + ex.Message);
        lblStatus.Text = "Unable to create user!";
    }
}

       CreateUser() 有 4 个重载的版本,其中最简单的只需要用户名和密码,最复杂的重载模式则需要一个密码问题和答案。

       CreateUser() 返回一个用户新实例,你可以添加进用户集合或作其他的处理,或者,根本不保存这个返回的实例引用。

       MembershipCreateStatus 枚举反应了用户创建状态的额外信息。

       注意,调用 CreateUser() 方法可能失败也可能成功,这取决于提供程序的配置。默认的成员资格提供程序需要你包含一个密码问题和答案。

       删除用户一样简单,调用 Membership.DeleteUser() 即可,需要传递一个用户名作为参数。

 

4. 检验用户

       Membership 类提供了检验成员资格的方法。如果用户在登录页面输入了用户名和密码,在你不使用 Login 控件或者改变了它默认的行为,总之,你可以自己实现底层数据的验证

if (Membership.ValidateUser(txtUserName.Text, txtPwd.Text))
{
    FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false);
}
else
{
    // Invalid user name or password
}

 

5. 系列总结

       成员资格 API 提供了用来管理应用程序用户的完整架构。成员资格 API 本身是基于提供程序的,你可以更换修改底层的提供程序来修改底层的存储,而无需改动程序。如何创建并配置一个自定义的成员资格提供程序会在今后的系列写出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET通用MSSqlHelper.cs是一个常用的数据库访问助手,用于简化和封装与Microsoft SQL Server数据库的交互。它提供了一些常用的操作方法,使开发人可以更快速、方便地进行数据库操作。 要下载MSSqlHelper.cs,可以按照以下步骤进行: 1. 打开浏览器,进入搜索引擎,如Google、Baidu等。 2. 在搜索框中输入“MSSqlHelper.cs下载”,点击搜索按钮。 3. 结果列表中可能会有一些网站提供MSSqlHelper.cs的下载,选择一个可信的来源,比如GitHub、NuGet等。 4. 点击下载按钮或链接,在弹出的对话框中选择保存文件的位置和名称,点击保存。 5. 下载完成后,打开下载的文件所在文件夹,查看是否成功下载了MSSqlHelper.cs文件。 下载完成后,你可以将MSSqlHelper.cs文件添加到你的ASP.NET项目中的适当位置。通常,将它添加到项目的“App_Code”文件夹中是一个常见的做法。 需要注意的是,下载的MSSqlHelper.cs文件可能是一个压缩文件(如zip),你需要解压缩文件并提取出MSSqlHelper.cs文件。确保下载的文件没有被恶意篡改或包含任何病毒等恶意代码。 一旦成功下载并添加了MSSqlHelper.cs,你就可以在你的ASP.NET项目中使用该提供的方法来执行数据库操作,如查询数据、插入、更新、删除等。 总之,下载和使用MSSqlHelper.cs可以帮助开发人更加高效地处理与Microsoft SQL Server数据库的交互,提高开发效率和代码质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值