asp.net2.0安全性(4)--Login系列控件--转载来自车老师
前面主要说了与安全相关的一系列的类,现在我们使用这些类就可以做出我们自己的安全系统了。其实微软的目的远不至于此,下面我们就来看一下微软为我们提供的Login系列控件。
Login系列控件是微软为了简化我们的开发过程,为我们进行常规的安全开发提供块捷途径。
Login系列控件包含下列控件:
Login 登录控件
LoginName 用于显示用户名的控件
LoginStatus 根据用户的登录状态显示不同的信息(登录,注销)
LoginView 根据登录状态的不同显示不同的模板
CreateUserWizard 提供了一个注册用户账号的向导模板
ChangePassword 更改密码
PasswordRecovery 当忘记密码的时候用于取回密码
以上几种控件的底层都与MembershipApi集成的,这几种控件之间是相互独立的,可以单独使用也可以搭配成一个较完整的安全管理。
Login控件:
登录界面,包含“用户名”、“密码”和登录按钮。
属性:
DestinationPageUrl 用户登录成功后转高的网页
FailureAction 登录失败进行的操作,Refresh和RedirectToLoginPage两种操作
RememberMeSet 设置“记住我”复选控。
CreateUserUrl 注册用户帐号的页面
HelpPageUrl 说明页面的URL
PasswordRecoveryUrl 密码恢复页面的URL
Login控件提供了一系列的预定义的样式,可以从“智能菜单”中点击“自动套用格式...”进行选择。也可以选择“转换为模板”,自己设置要显示的样式。
当你输入用户名和密码进行登录的时候,登录控件会自动去数据库中验证输入的用户名和密码。
自定义Authentication事件处理:
Login控件底层会使用Membership.Validate()和FormsAuthentication.RedirectFromLogin()方法进行验证,但有的时候我们己经有了现成的用户帐号和数据库的话,那如何做登录?
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
string str = WebConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
SqlConnection conn = new SqlConnection(str);
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select count(*) from login where username = @u and password = @p";
SqlParameter param;
param = new SqlParameter("@u", Login1.UserName);
cmd.Parameters.Add(param);
param = new SqlParameter("@p",Login1.Password);
cmd.Parameters.Add(param);
int n = (int)cmd.ExecuteScalar();
conn.Close();
if (n > 0)
e.Authenticated = true;
else
e.Authenticated = false;
}
自定义Login控件模板
现有的Login控件可能显得太单调,如果你想自定义登录控件应当如何操作?单击智能标签“转换为模板”,这样就可以设置你自己的控件了。
帐号的TextBox的id属性必须设置为:UserName
密码的TextBox的id属性必须设置为:Password
登录按钮的CommandName属性必须设为Login
LoginName控件:
把LoginName控件拖到界面中就可以完成了。
LoginStatus控件:
LoginStatus控件是个超链接,未登录的时候显示“登录”,登录以后显示“注销”,以提示用户登录或注销,其背后的运作原理是Request.IsAuthentication或User.Identity.IsAuthenticated作为判断依据。如果登录失败则转到Web.Config文件中指定的页面,如果登录成功则转到LoginStatus控件所在的网页。
属性:
LoginText:设置或获取登录文字
LogoutText:设置或获取注销文字
LoginImageUrl:设置登录超链的图片。
LogoutImageUrl:设置注销超链的图片。
LogoutAction:注销后的操作,Refresh、Redirect、RedirectToLoginPage
LogoutPageUrl:如果LogoutAction属性设为Redirect,则注销后转到LogoutPageUrl所设置的网址
LoginView控件:
默认有两个模板:AnonymousTemplate和LoggedInTemplate,分别为匿名用户和登录后的两个模板,这样就可以为匿名用户和登录用户显示不同的界面了。
另外LoginView控件还可以根据不同的角色创建不同的模板。选择智能标签的“编辑RoleGroups”可以添加新的模板,然后在视图中选择要编辑的角色模板就可以定义角色模板的样式了。
注意:如果一个用户有多个角色的话,那么,当他登录后就会LoginView控件显示他的第一个角色所对应的模板,而不是显示他所有角色的模板。
CreateUserWizard控件:
CreateUserWizard控件提供了一个用户注册的界面,它是一个向导控件,可以自己套用样式,该控件说简单,它也简单,说复杂也真够复杂的。只所以说它简单,是因为当你只是创建简单的注册页面时,将它拖到页面上设置一下样式就可以使用了。要说它复杂呢,是因为它的灵活性太强了,你可以自定义模板,加入自己的一些用户个性化信息。这里我不想多说,它是一个向导控件,所以它的自定义功能,我会在以后的Wizard控件中详细说明。
ChangePassword控件:
ChangePassword控件就是一个用户更改密码的控件,但只允许通过身份验证的用户更改,并且要求输入原来的旧密码。
PasswordRecovery控件:
当用户忘记密码的时候可以通过系统的安全问题,若回答正确系统就会自动寄一封Email给该帐户的用户,里面附有密码。
这种功能先决条件是你的网站要用SMTP服务设置
在Web.Config中设置:
<system.net>
<mailSettings>
<smtp from="grayworm@tom.com">
<network host="192.168.1.2" password="" userName="" />
</smtp>
</mailSettings>
</system.net>
或者:
“网站”-“asp.net配置”,开asp.net web应用程序管理器,再选择“应用程序”-“配置SMTP电子邮件设置”,在新的页面中设置你的邮件内容就可以了。
(车延禄)
收藏于 2007-07-11
asp.net2.0安全性(4)--Login系列控件--转载来自车老师的更多相关文章
- asp.net2.0安全性(3)--验证与授权--转载来自车老师
"验证"与"授权"是对网页资源安全管理的两道门. 验证(Authentication):检查用户是否是合法的用户.就像是网站大门口的保卫,服责验证使用的用户名和 ...
- asp.net2.0安全性(1)--用户角色篇(起篇)--转载来自车老师
安全管理的解决方案在.net1.1中几乎为一片空白,对于应用程序的验证与授权大部分的工作是开发人员自己编写代码,或者是借助企业库等工具来实现,此可谓.net1.1中的一大缺憾.在.net2.0中微软为 ...
- asp.net2.0安全性(2)--用户个性化设置(1)--转载来自车老师
在Membership表中可以存储一些用户的基本信息,但有的时候,我们需要记录的用户信息远远不止Membership表中提供的这些,如QQ.MSN.家庭住址.联系电话等等.那如何把这些用户信息记录到数 ...
- asp.net2.0安全性(2)--用户个性化设置(2)--转载来自车老师
上一篇我们用Profile.age等方式可以读取用户的年龄和其它的信息,但有的时候我们要查询显示所有用户的信息,但asp.net没有提供查询所有用户信息的功能,我们只能对现有的用户逐一查询其Profi ...
- asp.net2.0安全性(1)--用户角色篇(类)--转载来自车老师
Membership.MembershipUser和Roles类 用户与角色管理在asp.net2.0中是通过Membership和Roles两个类来实现的. Membership:用户成员账号管理, ...
- asp.net2.0导出pdf文件完美解决方案【转载】
asp.net2.0导出pdf文件完美解决方案 作者:清清月儿 PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式.这种文件格式与操作系统 ...
- asp.net2.0安全性(1)--用户角色篇(代码实现1)--转载来自车老师
创建用户: MembershipCreateStatus mc; Membership.CreateUser(txtUid.Text, txtPwd.Text, txtEmail.Text, txtQ ...
- asp.net2.0安全性(1)--用户角色篇(代码实现2)--转载来自车老师
加载所有用户 MembershipUserCollection user = Membership.GetAllUsers(); listUser.DataSource = user; listUse ...
- Asp.Net2.0下C#环境 Login控件实现用户登录
原文:Asp.Net2.0下C#环境 Login控件实现用户登录 一.前台显示效果 二.前台代码 <asp:Login ID="Login1" run ...
随机推荐
- ajax对服务器路径请求
$.post('/aaaa/bbbb/cccc', { "paraName": value}, function (data) { S ...
- HDOJ1232 并查集
所谓并查集 并:Union 查:Find 定义 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.常常在使用中以森林来表示. 集就是让每个元素构成一个单 ...
- Week6(10月17日):周末别忘记运动
Part I:提问 =========================== 1.多对多.一对多关系的数据实体模型,如何创建? 已知汽车4S店需开发一个客户关系管理系统(CRM),请为其中的客户和汽车 ...
- Delphi语言最好的JSON代码库 mORMot学习笔记1
mORMot没有控件安装,直接添加到lib路径,工程中直接添加syncommons,syndb等到uses里 --------------------------------------------- ...
- Debian为程序添加一个开始菜单,debian添加sublime开始菜单.
下了一个 '绿色' 的程序,想要加到开始菜单里面. 怎么做呢? 我这里以sublime2做例 去http://www.sublimetext.com/2 下载了linux 64位, 解压放到了下面的文 ...
- 亚马逊带Marketplace product code的image无法再mount到其他镜像上
这是对已发布镜像的保护么?难道对其进行修改的路彻底断掉了? 以volume形式attach也不行,dd成raw再读取也读不了,敢问路在何方呢 If a volume has an AWS Market ...
- SQL查询重复记录、删除重复记录方法
查找所有重复标题的记录:SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1 ...
- Linux下安装yum工具
Linux下安装yum工具 http://blog.csdn.net/caoshichaocaoshichao/article/details/13171919
- BZOJ 3631: [JLOI2014]松鼠的新家( 树链剖分 )
裸树链剖分... ------------------------------------------------------------------- #include<bits/stdc++ ...
- Linux开机启动十步骤
启动第一步--加载BIOS 启动第二步--读取MBR 启动第三步--Boot Loader 启动第四步--加载内核 启动第五步--用户层init依据inittab文件来设定运行等级 启动第六步--in ...