掌握.NET中的简单窗体鉴定

在ASP.NET安全术语中,有两个很重要的词语:鉴定和认证。鉴定机制有助于ASP.NET区别各个用户。一旦被执行,鉴定机制就会运行并判断你是否可以允许访问你想要访问的网页。

在三种ASP.NET鉴定类型中,有两种依赖于网页程序之外的技术:

Windows鉴定集成在操作系统(Windows NT/2000/XP)的鉴定机制中;
密码鉴定需要与一个Microsoft 密码服务器联系在一起。
你可以定义第三种类型鉴定机制,即窗体鉴定。窗体鉴定与ASP.NET程序紧密联系在一起。这一篇文章我们主要讲述有关窗体鉴定方面的内容。

简单性

窗体鉴定的一个重要的优点在于它的简单性。由于简单性,窗体鉴定只需要你遵循以下几步:

1.  编辑Web.config <authentication> 和 <authorization>中的内容;

2.  生成一个可供用户访问的标准SAPX网页;

3.  建立一个带有用户名和密码输入框,以及一个提交窗体铵钮的注册网页;

4.  单击窗体中的提交按钮,然后调用鉴定允许和RedirectFromLoginPage方法。

Web.config

Web.config中的<authentication>要素可以允许你在ASP.NET中使用窗体鉴定。其中的一个子要素<forms>允许你指定要注册的网页。在<forms>要素中,你可以有选择地添加一个<credentials>要素,这个要素直接分配用户名和密码,如表A所示。值得一提的是,我现在有必要解释一下窗体鉴定的简单建立用法,这就意味着我要把很多用户名和密码保存在Web.config中,这对于网络来说并不是一件很好的事情。

对于程序中的用户鉴定,你必须采取一定的措施以禁止非法用户的访问。这也就是<authorization>要素指定的功能。你只需在<deny>要素中的用户属性设置为“?,”即可,如表A所示。

现在,如果有人想访问被Web.config管理的ASPX网页,ASP.NET就会执行用户鉴定,并决定是否通过鉴定认可。

一个标准的网页

为了能检测你的鉴定环境是否真正起作用,你应该建立至少一个ASPX网页。表B中的范例建立的网页简单地说明了通过鉴定了的用户名,这就是证明鉴定已经正常的工作。如果要检测,你可以在你的浏览器中直接地访问这个网页。如果你的鉴定系统能够工作,你就能够进入以下要讲述的注册页。

注册(登录)页

最简单的注册页只包含一个用户名文本输入框,一个密码文本输入框,以及一个按钮,如表C所示。你必须在代码中编写按钮触发事件以调用处理鉴定的函数。

表D显示了按钮触发事件的过程。它采用System.Web.Security中的FormsAuthentication类,第一个函数即被调用,然后传递用户名和密码。.NET使用Web.config文件中的元素比较输入的用户名和密码。如果用户名和密码正确,RedirectFromLoginPage函数就会被调用。

RedirectFromLoginPage函数中的参数包含用户名和一个布尔量的值,这个值代表输入用户名对应的密码是否正确。

完成这些步骤之后,如果你想试一试浏览器能否正确访问这些标准网页,你可以直接使用注册页。除非你能正确地通过鉴定,否则你只能永远地停留在注册页。

改进措施

正如我所提过,你最好不要把用户名和密码长久地保存在Web.config文件中。这是因为你不能动态地接受新用户的信息,同时当你想人工地更新Web.config,你的程序会重新启动,这很有可能产生很多异常。

所以,你最好不要使用独立文件或数据库来保存用户名和密码。否则一旦你这样做,你将不能调用FormsAuthentication.Authenticate函数。

你也可以把密码进一步加密以避免一些别有用心的人获取用户名和密码表。FormsAuthentication类中的HashPasswordForStoringInConfigFile函数能达到这一要求。

快捷又安全

使用窗体鉴定,你可以在几分钟之内建立一个简单而又安全的网络程序,你无需在程序的ASPX文件中加入代码。这真是一种很快捷又安全的方法。

时间: 2024-09-24 02:14:15

掌握.NET中的简单窗体鉴定的相关文章

从在 Internet Explorer 中使用 Windows 窗体控件开始谈Smart Client

client|window|控件 首先引用Microsoft Windows 窗体快速入门教程上的文章"在 Internet Explorer 中使用 Windows 窗体控件":(如果引用的一些信息无法正常显示,请直接上面上的链接查看) 本主题描述如何在 Internet Explorer (IE) 内成功地执行 Windows 窗体控件.IE 内的 Windows 窗体控件无需用户提示即可激活,它不要求注册,而且利用公共语言运行库 (CLR) 代码访问安全性. 在 Internet

C#WinForm中实现异形窗体/控件

控件 制作异形窗体或控件的思路一般都是想办法生成一个region,然后设置给指定的窗口或控件.生成region的方法有很多,最常用的就是从一幅图片生成,把该图片中的透明色部分"抠"掉,剩下的部分作为一个region.设置窗口或控件的region可以用SetWindowRgn API,不过.NET framework封装了这个操作,在C#中只要对窗口或控件的Region属性赋值就可以了.下面我就把我在C#中实现异形窗体的核心代码贴出来给大家看看,有什么意见尽管提,别客气哦J   首先,是

Visual Basic .NET中多 Windows 窗体的同步

visual|window 这是一个有趣的问题.我保证某些聪明的编程好手会建议我使用委托.在这种事情发生之前,让我们 先探究一下这个问题的几种解决方案. 假定我有两个窗体,每个窗体都有两个 textbox 控件:txt1stData 和 txt2ndData.我怎样才能保持这两个窗体中的控件同步呢?对于我们讨论的问题来说,有两个或十个窗体都不重要,问题是相同的. 第一个办法相对简单.事实上,它甚至比我们直接使用委托更为简单,我想委托有时会给人用牛刀杀鸡的感觉.首先,我建立一个类它包含我希望与应用

给.NET中的Windows窗体加载Xp样式

window|加载 给.NET中的Windows窗体加载Xp样式 作者:Heath Stewart 介绍 当Windows XP 带着他特有的可视化样式或者主题发布时,许多人为他拥有的华丽界面而兴奋.然而,当.NET1.0正式版本发布的时候,许多人包括我自己为Windows 窗体不支持Windows XP 的可视化样式而失望.我对可视化样式的API函数和微软的.NET框架开发文档进行了一番研究,而后认识到为.NET应用程序加上Xp样式也不是很难. 下面的将通过一个简单的程序来为你的程序和控件加上

在IE浏览器中使用Windows窗体控件(一)

window|控件|浏览器 在IE浏览器中使用Windows窗体控件(一) 作者::Thiru Thangarathinam 翻译:秋枫 引言 在过去,Web程序员经常在他们的Web程序中使用ActiveX控件来实现一些胖客户端才具有的功能.不过现在开发者可以很容易的通过Microsoft.NET Framework来简洁和安全的建立对象,并且方便的在IE浏览器中切入使用.通过在IE浏览器中创建Windows窗体控件,开发者可以实现丰富的web客户端.在这篇文章中,我们将会知道怎样创建Windo

在IE浏览器中使用Windows窗体控件(二)

window|控件|浏览器 在IE浏览器中使用Windows窗体控件(二) 作者::Thiru Thangarathinam 翻译:秋枫 通过windows窗体控件访问Web Service 窗体控件一个重要优点就是你可以通过它在客户端实现丰富的用户信息.比如说,你可以通过窗体控件对Web服务的访问从而在IE中显示而不需要重新刷新该页面.为了演示这点,我们先来创建一个Web服务,接着再来演示怎样通过窗体控件调用Web服务. 创建Web service 我们创建一个 Visual C# Asp.n

asp.net Silverlight中的模式窗体_实用技巧

其实在Silverlight中开发模式窗体并不难,比在Html里面用div来构造容易多了,但是要做到具有重用性和规范性还是要下一点工夫的.如果SL的开发朋友们想偷一点懒,直接用些现成写好的模式窗体代码的话,我在这里介绍一个SL的框架,叫SilverlightFX,里面就有一个Form类,只要你的xaml类继承了Form类就可以很方便地使用模式窗体了.具体方面可以参照他的sample工程,这里给出SilverlightFX的连接给大家 http://projects.nikhilk.net/Sil

C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)

本文转载:http://www.csframework.com/archive/2/arc-2-20110805-1771.htm 文章侧重点主要是讨论"窗体"与"窗体"之间方法的调用,以及"MDI父窗体"与"Chilid子窗体"之间如何相互的调用方法. C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用) 看似一个简单的功能需求,其实很多初学者处理不好的,很多朋友会这么写: C# Code: //父窗体是是frmPare

Python的Flask框架中实现简单的登录功能的教程

  Python的Flask框架中实现简单的登录功能的教程,登录是各个web框架中的基础功能,需要的朋友可以参考下 回顾 在前面的系列章节中,我们创建了一个数据库并且学着用用户和邮件来填充,但是到现在我们还没能够植入到我们的程序中. 两章之前,我们已经看到怎么去创建网络表单并且留下了一个实现完全的登陆表单. 在这篇文章中,我们将基于我门所学的网络表单和数据库来构建并实现我们自己的用户登录系统.教程的最后我们小程序会实现新用户注册,登陆和退出的功能. 为了能跟上这章节,你需要前一章节最后部分,我们