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 成员资格可帮助您管理网站中的用户身份验证.它包含以下功能 创建新用户和密码. 将 ...
随机推荐
- Android获取联系人示例,从数据库加载,带首字母标签
这几天打算学习下Android联系人方便的一些东西,之前稍有涉略,不过每次都是浅尝辄止. 推荐国内两个Link: http://fanfq.iteye.com/blog/779569 http://w ...
- Redis for Windows(C#缓存)安装和使用
Redis for Windows(C#缓存)安装和使用 前言 前段时间写过两篇简单的有关Memcached缓存的相关文章,当然了只是入门的如何使用而已.最近这两天又发现了Redis这个神奇的东西,之 ...
- 2sum、3sum、4sum以及任意连续的数的和为sum、任意连续或者不连续的数的和为sum
2sum 如果数组是无序的,先排序(n*logn),然后用两个指针i,j,各自指向数组的首尾两端,令i=0,j=n-1,然后i++,j--,逐次判断a[i]+a[j]?=sum,如果某一刻a[i]+a ...
- Java微框架:不可忽视的新趋势--转载
原文:http://www.infoq.com/cn/news/2015/06/Java-Spark-Jodd-Ninja?utm_campaign=infoq_content&utm_sou ...
- linux修改history
1.cat ~/.bash_history cat -n ~/.bash_history [以行数的形式查看] 2.history | more Enter 键盘 ----------一行一行 空 ...
- java 访问修饰符
此题考察修饰符,函数定义等,故从网上搜罗了下相关资料,总结如下: 类.方法.成员变量和局部变量的可用修饰符 修饰符 类 成员访求 构造方法 成员变量 局部变量 abstract(抽象的) √ √ - ...
- FOR XML PATH 解决联接返回结果集各记录问题
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
- TikaEntityProcessor 各种示例
1. <dataConfig> <dataSource type="BinFileDataSource" /> <script><![CD ...
- Centos7.5 搭建Red5视频直播服务器
一.安装java环境 yum install java-1.7.0-openjdk 详细步骤请参考 http://www.cnblogs.com/java-qzq/p/5845509.html 我的这 ...
- React Native学习-CameraRoll
react-native中CameraRoll模块提供了访问本地相册的功能. 在react版本为0.23.0的项目中,不支持Android,而且在iOS中使用CameraRoll还需要我们手动操作: ...