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

一、成员资格与角色,

第一步:注册数据库,在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", "qqq@qq.qq");

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

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

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

    Membership它们用的是ASPNETDB这个数据库,但我们可以使用我们自定义的数据库,然而除非我们自定义的数据库有着跟这个ASPNETDB一样的模式,否则ASP.NET提供的默认的SqlMemb ...

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

    asp.net MVC 内置的membershipProvider可以实现用户登陆验证,但是它用的是自动创建的数据库,所以你想用本地数据库数据去验证,是通过不了的. 如果我们想用自己的数据库的话,可以 ...

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

    Membership.MembershipUser和Roles类 用户与角色管理在asp.net2.0中是通过Membership和Roles两个类来实现的. Membership:用户成员账号管理, ...

  4. MVC中的成员资格,授权,安全性

    使用 Authorize 特性登录 Authorize 是 ASP.NET MVC 自带的默认授权过滤器, 可用来限制用户对操作方法的访问. 保护控制器操作 Authorize 特性在表单身份验证和 ...

  5. Membership基本用法

    MemberShip简介: Membership是Asp.Net框架,用于管理网站的用户Membership,角色Roles以及配置信息Profile. System.Web.Security.Mem ...

  6. Membership角色与权限管理

    安全性:成员资格与角色:验证与授权. 一.建数据库:在VS工具中用DOS环境执行ASPNET_REGSQL 二.配置程序访问数据库: > 在web.config之中加入 <connecti ...

  7. Membership三步曲之进阶篇 - 深入剖析Provider Model

    Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...

  8. Membership三步曲之入门篇 - Membership基础示例

    Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Pro ...

  9. membership与成员资格

    membership成员资格是ASP.NET 成员资格为您提供了一种验证和存储用户凭据的内置方法.因此,ASP.NET 成员资格可帮助您管理网站中的用户身份验证.它包含以下功能 创建新用户和密码. 将 ...

随机推荐

  1. C++红旗之更短形式:500多字符且无法遵守原题规则

    Purpose and Scope 研究五星红旗C++代码生成问题的代码压缩方法. 没有最短,仅仅有更短. 已经尽力了.爱因斯坦的三个小板凳里,我这是第四个. 继续深入压缩代码的方法肯定非常诡异了. ...

  2. POJ 2970 The lazy programmer(优先队列+贪心)

    Language: Default The lazy programmer Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 1 ...

  3. android程序逆向工程

    随着智能手机的普及,功能越来越强大.程序也越来多和复杂化.研究一下android系统的逆向工程也是挺有意思的. 目前android逆向工程还处于初级阶段.表现在于: 1.没有完整的动态调试程序.目前由 ...

  4. LINUX HOOK

    http://blog.csdn.net/yyttiao/article/details/7346287

  5. RAID设备

    RAID(Redundant Array of Independent Disk),独立冗余磁盘阵列(通常简称磁盘阵列).磁盘阵列的实质是将多个磁盘通过RAID控制器组合在一起,形成一个新的磁盘.这个 ...

  6. VirtualBox 导入.vdi文件时报“uuid is exists”错误

    解决办法: 1.要安装的.vdi文件所在目录:D:\developTools\vm\RedHatLinux1.vdi 2.找到VirtualBox的安装目录,这里是D:\Program Files\O ...

  7. openlayers加载百度地图

    最近在做openlayers添加百度地图的扩展类,经过轮番的尝试,终于将其接入了,但是发现偏差比较大,有根据百度的坐标进行了比对,将切片原点进行了调整,发现OK了.打开百度地图,可以看出切片的路径如: ...

  8. [经典算法] 排列组合-N元素集合的所有子集(二)

    题目说明: 给定一组数字或符号,按照字典序产生所有可能的集合(包括空集合),例如给定1 2 3,则可能的集合为:{}.{1}.{1,2}.{1,2,3}.{1,3}.{2}.{2,3}.{3}. 题目 ...

  9. 如何解决sql server 2008附加数据库失败

    MDF文件是数据库存贮数据的文件,可以通过附加的方法添加到数据库,在添加mdf文件的时候遇到附加数据库失败,具体提示如下: microsoft SQL server,错误5120 最初以为是附加权限的 ...

  10. DML 数据操控语言

    一.DML数据操作语言  (DQL  select ) 主要用于检索.插入和修改数据库信息.它是最常用的SQL命令,如INSERT(插入).UPDATE(更新).SELECT(选择).DELETE(删 ...