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

一、成员资格与角色,

第一步:注册数据库,在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. System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 'XXX' 数据库不同

    System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 'XXX' 数据库不同. 1. 删除与要恢复数据库同名的已经存在的数据库:2. 右击“数据库”选择“还原数 ...

  2. 安卓 SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  3. Android (cocos2dx 网络访问)访问权限设置

    Android开发应用程序时,如果应用程序需要访问网络权限,需要在 AndroidManifest.xml 中加入以下代码: 同样的如果用到其它的权限,也需要作出声明,部分权限列表如下: androi ...

  4. 0c-41-ARC使用特点及注意事项

    1.ARC特点总结 1)不允许调用release,retain,retainCount 2)允许重写dealloc,但是不允许调用[super dealloc] 3)@property的参数: str ...

  5. innobackupex 备份实验

    [root@localhost ~]# xtrabackup -v xtrabackup version based Linux (x86_64) (revision id: 45cda89) [ro ...

  6. MySQL 调优基础:Linux内存管理 Linux文件系统 Linux 磁盘IO Linux网络

    http://www.cnblogs.com/digdeep/category/739915.html

  7. CGI,FastCGI,PHP-CGI与PHP-FPM(转)

    http://www.cnblogs.com/zl0372/articles/php_4.html CGI CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服 ...

  8. SimpleDateFormat使用详解及与毫秒的相互转换

    1. SimpleDateFormat使用详解 public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个以国别敏感的方 ...

  9. mysql二进制包安装与配置实战记录

    导读 一般中小型网站的开发都选择 MySQL 作为网站数据库,由于其社区版的性能卓越,搭配 PHP .Linux和 Apache 可组成良好的开发环境,经过多年的web技术发展,在业内被广泛使用的一种 ...

  10. 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层

    1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LV ...