20150320--安全性,Membership类

安全性——验证与受权,成员资格与角色。web

1、成员资格与角色,正则表达式

第一步:注册数据库,在VS中运行dos命令窗口中,输入:aspnet_regsql,创建数据库表。sql

如何启动VS的dos命令窗口,在  ..\Microsoft Visual Studio 2012\Visual Studio Tools 文件中的  VS2012 x64 兼容工具命令提示数据库

输入:aspnet_regsqlexpress

image

 

image

按照提示完成数据库的建立。安全

image

第二步:配置程序,web.configapp

SQL链接语句:ide

<connectionStrings>
     <add name="conn" connectionString="server=.;database=imd;user=sa;pwd=123"/>
</connectionStrings>

membership设置:工具

<membership defaultProvider="AspNetSqlMembershipProvider">
    <providers>
        <clear/>
            <add name="AspNetSqlMembershipProvider"
                 type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                 connectionStringName="conn"
                 enablePasswordRetrieval="false" 
                 enablePasswordReset="true" 
                 requiresQuestionAndAnswer="false" 
                 requiresUniqueEmail="false"
                 maxInvalidPasswordAttempts="5" 
                 minRequiredPasswordLength="6"
                 minRequiredNonalphanumericCharacters="0"
                 passwordAttemptWindow="10"
                 applicationName="/" />
    </providers>
</membership>

名称   :  说明
ApplicationName获取或设置要存储和检索其成员资格信息的应用程序的名称。
Description获取一条简短的易懂描述,它适合在管理工具或其余用户界面 (UI) 中显示。
EnablePasswordReset获取一个值,指示 SQL Server 成员资格提供程序是否配置为容许用户重置其密码。
EnablePasswordRetrieval获取一个值,指示 SQL Server 成员资格提供程序是否配置为容许用户检索其密码。
MaxInvalidPasswordAttempts获取锁定成员资格用户前容许的无效密码或无效密码提示问题答案尝试次数。
MinRequiredNonAlphanumericCharacters获取有效密码中必须包含的最少特殊字符数。
MinRequiredPasswordLength获取密码所要求的最小长度。
Name得到一个友好名称,用于在配置过程当中引用提供程序。
PasswordAttemptWindow获取时间长度,在该时间间隔内对提供有效密码或密码答案的连续失败尝试次数进行跟踪。
PasswordFormat获取一个值,表示用于在 SQL Server 成员资格数据库中存储密码的格式。
PasswordStrengthRegularExpression获取用于计算密码的正则表达式。
RequiresQuestionAndAnswer获取一个值,指示 SQL Server 成员资格提供程序是否配置为要求用户在进行密码重置和检索时回答密码提示问题。 ui

RequiresUniqueEmail获取一个值,指示 SQL Server 成员资格提供程序是否配置为要求每一个用户名具备惟一的电子邮件地址。

 

第三步:程序编写:membership类,

须要引用

using System.Web.Security;

1.注册用户

Membership.CreateUser("qqq", "qqqqqq", "qqq@qq.qq");

2.验证用户

image

//登陆按钮
 protected void Button_denglu_Click(object sender, EventArgs e)
    {
        bool isOK = Membership.ValidateUser(TextBox_user.Text,TextBox_pwd.Text);
        if (isOK == true)
        {
            Response.Write("登录成功!!!");
            Label1.Text = Membership.GetUser(TextBox_user.Text).ToString();
        }
        else
        {
            Response.Write("shibai!!");
            Label1.Text = "未登录";
        }
    }

成功登陆:

image

3.修改密码

使用membership的对象实例方法,GetUser()。

image

修改按钮:

//修改密码按钮
    protected void Button2_Click(object sender, EventArgs e)
    {
        MembershipUser user = Membership.GetUser(Label1.Text); //找用户
        if (user != null)
        {
            bool pwdOK = user.ChangePassword(TextBox_yuanpwd.Text, TextBox_newpwd.Text);//修改密码
            if (pwdOK == true)
            {
                Response.Write("<script>alert('修改为功!');</script>");
            }
            else
            {
                Response.Write("<script>alert('修改失败!');</script>");
            }
            //user.ChangePassword(TextBox_yuanpwd.Text,TextBox_newpwd.Text);//修改密码
        }
    }

4.获取(查找)用户:

按照如下格式设计一个页面

  image

C#代码:
获取单个单用户:

//单个用户按钮
    protected void Button1_Click(object sender, EventArgs e)
    {
       MembershipUser user = Membership.GetUser(TextBox1.Text);//获取单个用户的数据
        Label1.Text = user.Email;
    }

获取全部用户:

//全部用户按钮
    protected void Button2_Click(object sender, EventArgs e)
    {
        MembershipUserCollection users = Membership.GetAllUsers();//获取全部用户
         //CheckBox的数据绑定。
        CheckBoxList1.DataSource = users;
        CheckBoxList1.DataTextField = "Email";
        CheckBoxList1.DataValueField = "UserName";
        CheckBoxList1.DataBind();
    }

获取单用户:

image

获取全部用户:

image

5.删除用户: Membership.DeleteUser(userName);

添加一个删除按钮,删除按钮代码:

protected void Button3_Click(object sender, EventArgs e)
    {
        //删除
        string userName = CheckBoxList1.SelectedValue;
        Membership.DeleteUser(userName);//删除
        //从新查询显示
        MembershipUserCollection users = Membership.GetAllUsers();
        CheckBoxList1.DataSource = users;
        CheckBoxList1.DataTextField = "Email";
        CheckBoxList1.DataValueField = "UserName";
        CheckBoxList1.DataBind();

    }

选中用户

image

点击删除,删除成功:

image

6.禁用或启用:

在这以前先来了解下SQL中表的两个列名:IsApproved(是否经过验证)、IsLockedOut(是否已锁)

image

IsApproved是能够由管理员来修改的,用来断定新用户是否经过审核。

IsLockedOut是用户尝试登录时屡次输入错误的密码时,帐户会被锁定,管理员只能够解锁,没法主动锁定。

未经过审核或者被锁定时,用户都没法正常登录。只有经过审核而且未锁定的时候才可以使用

//禁用按钮
    protected void Button4_Click(object sender, EventArgs e)
    {
        string userName = CheckBoxList1.SelectedValue;
        //
        MembershipUser user = Membership.GetUser(userName);
        //改(尚未送回数据库)
        user.IsApproved = false;
        //保存(送回数据库)
        Membership.UpdateUser(user);
    }
    //启用按钮
    protected void Button5_Click(object sender, EventArgs e)
    {
        string userName = CheckBoxList1.SelectedValue;
        //
        MembershipUser user = Membership.GetUser(userName);
        //改(尚未送回数据库)
        user.IsApproved = true;
        //保存(送回数据库)
        Membership.UpdateUser(user);
    }

修改后必定要记得改写数据库,即UpdateUser(用户名)。
7.解锁用户:

//解锁按钮
    protected void Button6_Click(object sender, EventArgs e)
    {
        string userName = CheckBoxList1.SelectedValue;
        //
        MembershipUser user = Membership.GetUser(userName);
        //解锁
        user.UnlockUser();
    }
UnlockUser()语句能够直接改写数据库,解锁用户。
相关文章
相关标签/搜索