【C#.NET】保护你的ASP.NET应用程序(三)安全性相关的控件
2009-09-25 17:24
489 查看
15.6 安全性相关的控件
15.6.1 ASP.NET登录控件概述
使用ASP.NET 2.0提供的这些控件,我们只需要进行简单的设置而无需写一行代码就能提供“注册”、“登录”、“修改密码”和“取回密码”等与账户密切相关的一些操作。如图15-26所示,可以看到IDE工具箱中的一套登录控件。
图15-26 ASP.NET登录控件
15.6.2 登录控件
首先添加一个Login.aspx,在页面上放入一个Login控件,然后使用属性窗口对控件进行配置。<asp:Login ID="Login1" runat="server" CreateUserText="没有注册?"
CreateUserUrl="Register.aspx" PasswordRecoveryText="忘记密码?"
PasswordRecoveryUrl="PasswordRecovery.aspx"/>
CreateUserText属性表示创建用户链接的字符串,CreateUserUrl属性表示创建用户的链接地址,PasswordRecoveryText属性表示取回密码链接的字符串,PasswordRecoveryUrl表示取回密码的链接地址。
然后浏览Login.aspx,界面如图15-27所示。
15.6.3 创建用户向导控件
在创建登录页面的时候,我们配置了注册链接的地址为Register.aspx,因此需要创建一个Register.aspx页面用于注册操作。在页面上放置一个CreateUserWizard控件。<asp:CreateUserWizard ID="CreateUserWizard1" runat="server"
ContinueDestinationPageUrl="Default.aspx" />
在这里,ContinueDestinationPageUrl属性表示注册完成后转向的页面地址。之后,我们会创建Default.aspx来显示登录名和登录状态等信息。
浏览Default.aspx效果,如图15-28所示。
注意以下几点。
1.在注册后,系统会自动为用户登录。
2.默认情况下密码需要有一定的强度(最短长度为7位,且必须包含1个非字母数字字符),我们可以通过修改Web.config文件来改变这个设定,比如下面的配置段为成员资格指定了一个MyAspNetSqlProvider的Provider,并设定密码最短长度为6位,不需要包含任何非字母数字字符(<system.web>节点下)。
<membership defaultProvider="MyAspNetSqlProvider">
<providers>
<add name="MyAspNetSqlProvider" type="System.Web.Security.
SqlMembershipProvider" connectionStringName="LocalSqlServer"
minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0"
applicationName="/"/>
</providers>
</membership>
当然,也别忘记指定用于成员资格服务的数据库连接字符串(<configuration>节点下)。
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=."SQLEXPRESS;Integrated
Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
注意:其他有关成员资格的配置请回顾15.5.1节。
15.6.4 密码恢复控件
按照Login控件的PasswordRecoveryUrl属性,新建一个用于密码恢复(取回密码)操作的页面PasswordRecovery.aspx。在页面上放入一个PasswordRecovery控件。整个密码恢复的过程如下。1.输入用户名。
2.输入该用户密码问题的答案。
3.如果答案正确,那么系统会把新的密码发送到用户的邮箱中。
因此,我们需要在Web.config文件的<configuration>节点下新增SMTP邮件服务器的配置。
<system.net>
<mailSettings>
<smtp from="发件人的邮件地址">
<network host="SMTP邮件服务器名" port="端口(默认25)" password="" userName="" />
</smtp>
</mailSettings>
</system.net>
浏览PasswordRecovery.aspx进行密码找回操作,然后你会收到如图15-29所示的一封邮件:
15.6.5 修改密码控件
用户在登录后可能还会希望进行密码修改操作,现在就来创建一个ChangePassword.aspx页面,然后在页面上放入一个ChangePassword控件。<asp:ChangePassword ID="ChangePassword1" runat="server" ContinueDestinationPageUrl=
"Default.aspx"/>
在这里,我们设置ContinueDestinationPageUrl属性为Default.aspx,表示在修改密码后让系统转到Default.aspx。修改密码界面如图15-30所示。
15.6.6 其他控件
最后,来完成Default.aspx。除了注册、登录和密码操作外,很多时候我们还有一些其他需求,比如下面的操作。· 为没有登录的用户提供登录操作,为已经登录的用户提供退出操作。
· 显示已经登录的用户名。
· 为已登录和未登录的用户显示不同的信息。
要实现这三个要求同样不需要写任何代码,我们可以分别使用LoginStatus、LoginName和LoginView控件来完成。
· LoginStatus控件会自动根据用户是否登录来显示登录“链接”或者退出“链接”。当然,你也可以把文字换成图片。
· LoginName控件可以按照一定的格式来显示登录的用户名。
· LoginView控件提供了LoggedInTemplate和AnonymousTemplate等模板,LoggedInTemplate模板中的内容会在登录后显示,而AnonymousTemplate模板中的内容会在未登录时显示。
下面,就在页面上添加这三个控件,并做一定的设置。
<asp:LoginStatus ID="LoginStatus1" runat="server" />
<asp:LoginName ID="LoginName1" runat="server" FormatString="您好:{0}"/>
<asp:LoginView ID="LoginView1" runat="server">
<LoggedInTemplate>
<a href="ChangePassword.aspx">修改密码</a>
</LoggedInTemplate>
<AnonymousTemplate>
<a href="PasswordRecovery.aspx">恢复密码</a>
</AnonymousTemplate>
</asp:LoginView>
页面效果如图15-31所示。
登录前:
登录后:
图15-31 LoginStatus、LoginName和LoginView控件
相关文章推荐
- 【C#.NET】保护你的ASP.NET应用程序(二)ASP.NET 2.0的成员资格和角色管理器
- 【C#.NET】保护你的ASP.NET应用程序(四)ASP.NET网站管理工具
- 【C#.NET】保护你的ASP.NET应用程序(五)成员资格和角色管理API编程
- asp.net相关控件的客户端及服务器端的禁用和启用
- ASP.NET中的验证相关知识 及 Login 控件的基本用法
- asp.net集合属性控件相关技巧
- Essential Chart for ASP.NET MVC商业图表控件相关介绍及下载
- C# ASP.NET 控制Windows服务的开启、关闭、重启相关参考资料
- C#、ASP.NET获取当前应用程序的绝对路径,获取程序工作路径
- asp.net中用C#实现站点计数器用户控件[转]
- asp.net(C#)中给控件添加客户端js事件的方法
- Asp.net 2.0控件开发相关调试(JavaScript调试和自定义控件设计时调试)
- 细谈asp.net如何处理应用程序-----c#菜鸟日记
- 在UpdatePanel中使用验证控件 (asp.net C#)
- ASP.NET web的自定义用户控件以及相关问题
- 图像处理控件ImageGear for .NET教程:C# WPF应用程序创建示例(3)
- ASP.NET应用程序安全性问题
- C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
- c#控件文档API列表 asp.net控件产品技术文档中文版 .net控件API中文技术文档
- ASP.NET相关控件GridView和DetailsView的使用