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 成员资格可帮助您管理网站中的用户身份验证.它包含以下功能 创建新用户和密码. 将 ...
随机推荐
- 【MongoDB】mongoimport and mongoexport of data (一)
In the software development, we usually are faced with a common question of exporting or importing d ...
- SpringMVC 源码深度解析<context:component-scan>(扫描和注冊的注解Bean)
我们在SpringMVC开发项目中,有的用注解和XML配置Bean,这两种都各有自己的优势,数据源配置比較经经常使用XML配置.控制层依赖的service比較经经常使用注解等(在部署时比較不会改变的) ...
- iOS开发——路径篇&混编路径与全局宏路径
混编路径与全局宏路径 最近在做东西的时候有一个地方要用到一个第三方库的,但是目前swift版的还没有找到,自己又不想写(其实是不会写),所以就想到了混编,但是中间出现了好多问题,其中印象最深的就是桥接 ...
- iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)
iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController) 前面我们介绍了StoryBoard这个新技术,和纯技术 ...
- 云服务器 ECS Linux 误删除文件恢复方法介绍
云服务器 ECS Linux 下,rm -rf 意味着一旦删除的文件是无法挽回的.但如果在没有文件覆盖操作的前提下,可以先尝试相关方式进行文件恢复. 本文对此进行简要说明. https://help ...
- 关于self.用法的一些总结
转自:http://www.cocoachina.com/bbs/read.php?tid=12850&page=1 最近有人问我关于什么时候用self.赋值的问题, 我总结了一下, 发出来给 ...
- JavaScript目录
1. 如何快速检查js语法学习Javascript 2. 如何快速掌握CSS(各种CSS工具)
- 关于Spring IOC容器解释
何谓控制反转(IoC = Inversion of Control),何谓依赖注入(DI = Dependency Injection)?之前看到过两个比喻,觉得比较形象,特在此写下: IoC,用白话 ...
- mkinitrd---简单介绍
转载:http://blog.csdn.net/zwcq82/article/details/4295481 原来对mkinitrd不是很了解.最近做内核升级,需要制作信息的initrd文件,发现出错 ...
- Android自定义窗口动画
第一步,设置出现和消失的xml 1.在res/anim下创建enter_anim.xml,设置窗口出现的动画 <?xml version="1.0" encoding=&qu ...