20150320--安全性,Membership类

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

一、成员资格与角色,

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

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

输入:aspnet_regsql

 

按照提示完成数据库的创建。

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

SQL连接语句:

<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 成员资格提供程序是否配置为要求用户在进行密码重置和检索时回答密码提示问题。

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

 

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

需要引用

using System.Web.Security;

1.注册用户

Membership.CreateUser("qqq", "qqqqqq", "[email protected]");

2.验证用户

//登录按钮
 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 = "未登陆";
        }
    }

成功登录:

3.修改密码

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

修改按钮:

//修改密码按钮
    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.获取(查找)用户:

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

 

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();
    }

获取单用户:

获取所有用户:

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();

    }

选中用户

点击删除,删除成功:

6.禁用或启用:

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

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()语句可以直接改写数据库,解锁用户。

时间: 2024-11-08 19:30:40

20150320--安全性,Membership类的相关文章

MVC中关于Membership类跟数据库的问题

Membership它们用的是ASPNETDB这个数据库,但我们可以使用我们自定义的数据库,然而除非我们自定义的数据库有着跟这个ASPNETDB一样的模式,否则ASP.NET提供的默认的SqlMembershipProvider将无法被使用.也就是说,如果我们还要用ASP.NET提供的SqlMembershipProvider,我们就必须ASPNETDB这个数据库文件或是它的拷贝.明显,这不是我们要的.为此,若我们使用了自定义的数据库(而非ASPNETDB的拷贝),那么我们就必须写自己的Memb

asp.net MVC中如何用Membership类和自定义的数据库进行登录验证

asp.net MVC 内置的membershipProvider可以实现用户登陆验证,但是它用的是自动创建的数据库,所以你想用本地数据库数据去验证,是通过不了的. 如果我们想用自己的数据库的话,可以写自己的membershipProvider!下面介绍如果创建自己的membershipProvider: 1.写自己的MembershipProvider类,这个类继承自命名空间System.Web.Security下的MembershipProvider类 这个类放在哪无所谓,这里我放在新建My

asp.net2.0安全性(1)--用户角色篇(类)--转载来自车老师

Membership.MembershipUser和Roles类 用户与角色管理在asp.net2.0中是通过Membership和Roles两个类来实现的. Membership:用户成员账号管理,用户名.密码.邮箱等 Roles:负责用户和群组之间关系管理. l         Membership类: 主要是创建用户帐号.验证用户身份和管理用户设置 属性: 1)        EnablePasswordReset:获取一个值,以指示是否可以重置密码. 2)        EnablePa

ASP.net Membership角色与权限管理(一)

ASP.net Membership角色与权限管理(一) 本文目录:1.membership简介2.membership在sql server中的设置3.配置web.config4.创建用户CreateUserWizard控件5.用户登录login控件6.显示当前用户的名称LoginName控件7.检测用户的身份验证状态的LoginStatus控件8.为不同类别用户呈现不同内容的LoginView控件9.更改密码的ChangePassword控件10.自助找回密码的PasswordRecover

全新的membership框架Asp.net Identity(1)——.Net membership的历史

在Asp.net上,微软的membershop框架经历了Asp.net membership到Asp.net simple membership,再到现在的Asp.net Identity. 每一次改变,都使得验证框架更加的适应变化和可定制.这篇文章是Asp.net Identity系列的开篇,主要就membership的历史以及Asp.net Identity中的中的一些新的特性和设计思想分享一下自己的理解.后续将会对Asp.net Identity的实际使用以及实现方式等进行进一步展开. 一

asp.net2.0安全性(2)--用户个性化设置(2)--转载来自车老师

上一篇我们用Profile.age等方式可以读取用户的年龄和其它的信息,但有的时候我们要查询显示所有用户的信息,但asp.net没有提供查询所有用户信息的功能,我们只能对现有的用户逐一查询其Profile信息. 第一步:设置配置文件 第二步:得到所有的用户 MembershipUserCollection users = Membership.GetAllUsers(); 这里用到了Membership类的GetAllUsers()方法,此内容已经在“用户与角色管理”中说过,不再赘述. 第三步:

membership与成员资格

membership成员资格是ASP.NET 成员资格为您提供了一种验证和存储用户凭据的内置方法.因此,ASP.NET 成员资格可帮助您管理网站中的用户身份验证.它包含以下功能 创建新用户和密码. 将成员资格信息(用户名.密码和支持数据)存储在 Microsoft SQL Server.Active Directory 或其他数据存储区. 对访问站点的用户进行身份验证.可以以编程方式验证用户,也可以使用 ASP.NET 登录控件创建一个只需很少代码或无需代码的完整身份验证系统. 管理密码,包括创

Membership ——入门基础

Membership是ASP.NET为我们提供的一套验证和存储用户凭证的框架.它可以帮助我们快速的开发用户登录.管理以及权限验证相关的模块,很多人可能会说Membership开发起来确实很快,但是总是和需求有那么一点不匹配,那我们就要用到Membership的自定义扩展功能了,如果真正掌握了Membership的话,对于我们快速开发还是有很大帮助的,更重要的是Membership是一套可灵活扩展的框架,包括里面的Provider模型对于想学习架构的同学来说是一个不错的案例,那么接下来我们就来一步

C#文件操作基础之File类和FileInfo类

文件和I/O流的差异: 文件是一些具有永久存储及特定顺序的字节组成的一个有序的.具有名称的集合. 因此对于文件,我们常常想到目录路径,磁盘存储,文件和目录名等方面. I/O流提供一种后备存储写入字节和从后备存储读取字节的方式. 后备存储可以为多种存储媒介之一. System.IO命名空间中的常用类: BinaryReader     用特定的编码将基元数据类型读作二进制值 BinaryWriter     以二进制形式将基元类型写入流,并支持用特定的编码写入字符串 Directory