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", "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类的更多相关文章
- MVC中关于Membership类跟数据库的问题
Membership它们用的是ASPNETDB这个数据库,但我们可以使用我们自定义的数据库,然而除非我们自定义的数据库有着跟这个ASPNETDB一样的模式,否则ASP.NET提供的默认的SqlMemb ...
- asp.net MVC中如何用Membership类和自定义的数据库进行登录验证
asp.net MVC 内置的membershipProvider可以实现用户登陆验证,但是它用的是自动创建的数据库,所以你想用本地数据库数据去验证,是通过不了的. 如果我们想用自己的数据库的话,可以 ...
- asp.net2.0安全性(1)--用户角色篇(类)--转载来自车老师
Membership.MembershipUser和Roles类 用户与角色管理在asp.net2.0中是通过Membership和Roles两个类来实现的. Membership:用户成员账号管理, ...
- MVC中的成员资格,授权,安全性
使用 Authorize 特性登录 Authorize 是 ASP.NET MVC 自带的默认授权过滤器, 可用来限制用户对操作方法的访问. 保护控制器操作 Authorize 特性在表单身份验证和 ...
- Membership基本用法
MemberShip简介: Membership是Asp.Net框架,用于管理网站的用户Membership,角色Roles以及配置信息Profile. System.Web.Security.Mem ...
- Membership角色与权限管理
安全性:成员资格与角色:验证与授权. 一.建数据库:在VS工具中用DOS环境执行ASPNET_REGSQL 二.配置程序访问数据库: > 在web.config之中加入 <connecti ...
- Membership三步曲之进阶篇 - 深入剖析Provider Model
Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- membership与成员资格
membership成员资格是ASP.NET 成员资格为您提供了一种验证和存储用户凭据的内置方法.因此,ASP.NET 成员资格可帮助您管理网站中的用户身份验证.它包含以下功能 创建新用户和密码. 将 ...
随机推荐
- JS的注意点
JS的跨域访问问题. http://www.cnblogs.com/rush/archive/2012/05/15/2502264.html JS能操作的范围:HTTP协议的内容.但是不能直接访问re ...
- 【AngularJS】AngularJS 教程
AngularJS通过新的属性和表达式扩展了HTML.------------->扩展HTML属性 AngularJS可以构建一个单页面应用程序(SPAs: Single Page Applic ...
- 对线性回归,logistic回归和一般回归的认识
原文:http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971867.html#3281650 对线性回归,logistic回归和一般回归的认识 ...
- How to Install and Configure Nginx from Source on centos--转
1.CentOS - Installing Nginx from source http://articles.slicehost.com/2009/2/2/centos-installing-ngi ...
- 关于删除7z历史解压路径
目前7zip尚无此功能,只能从注册表入手了,7zip历史记录保存在注册表 HKEY_CURRENT_USER\Software\7-Zip\FM 下的CopyHistory和FolderHistory ...
- javascript函数中的实例对象、类对象、局部变量(局部函数)
定义 function Person(national,age) { this.age = age; //实例对象,每个示例不同 Person.national = national; //类对象,所 ...
- Javascript教程:AngularJS的五个超酷特性
AngularJS是一个超棒的javascript框架,不单单对于开发人员来说非常有吸引力,对于UI设计师来说也同样出色.在这篇教程中,我们将简单的介绍AngularJS几个重量级必备特性,并且介绍它 ...
- Find the Clones
Find the Clones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 6365 Accepted: 2375 D ...
- c# 将文本中的数据快速导入到数据库(200万左右的数据量)
1.sql2008中 list表,只有一个字段 Lvalue 2.文本大约256万的数据量 3.测试结果:用时36秒! string connStr = @"Data Source=.\SQ ...
- 【Python Lib】解析HTML利器 BeautifulSoup
- - 官方API文档,中文版 http://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html - 以后会把常用的摘录出来