蒙在股里 发表于 2015-1-16 22:31:47

ASP.NET网页编程之争先试用ASP.NET 2.0中的新型平安控件

我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《Java的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。asp.net|平安|控件  1、弁言

  与ASP.NET2.0一同上市的有几个新的平安控件-它们位于工具的Login选项卡中(见)-这些控件年夜年夜简化了Web开辟职员的事情。经由过程利用这些新的平安控件,如今你能够实行比方用户登录、注册、口令改动等的义务;并且,为此做出的勉力仅是拖放响应的控件到你的Web表单上往。在本文中,我将向你展现如何利用这些新控件来完成用户认证。

  起首,让我们探究一下LoginView、LoginStatus和LoginName三个控件的利用。起首,让我们利用VisualStudio2005Beta2构建一个Web工程。启动VisualStudioIDE,然后从文件菜单中点击"NewWebSite"以创立一个新的Web工程,并定名工程为"C:SecurityControls"。

  在Default.aspxWeb表单上,拖放并到场一个LoginView控件。该LoginView控件是一个容器控件-用于依据用户是不是已登录显现分歧的信息。

  起首,我们用文本添补LoginView控件,如所示。然后,把Login控件拖拽到LoginView控件上。在用户还没有被认证(匿名)之前,你刚输出的文本将被显现。该Login控件显现一个链接以同意用户被重定向到另外一个页面以登录到使用程序。

  在LoginView控件的"SmartTasks"菜单上,把视图改动为"LoggedInTemplate"(见)。

  随后改动视图,把在中显现的文本输出到LoginView控件。一旦用户被认证该文本即被显现。然后,把LoginName控件拖放到LoginView控件当中。该LoginName控件将显现用于登录到使用程序的用户名。


.该图显现ASP.NET2.0中新型平安控件。.图显现添补LoginView控件的历程。

.你能够改动LoginView控件的显现情势。.在用户被认证后该文本显现出来。
  2、利用Login控件

  如今让我们增加一新的Web表单到该工程(在办理计划资本办理器中右击工程称号而且选择"AddNewItem...")而且定名为Login.aspx。你的使用程序将利用这个表单来同意用户登录到该使用程序。

  注重,在ASP.NET2.0中,默许登录页面定名为Login.aspx(这是被默许到场到ASP.NET2.0中的并能够经由过程检察machine.config.comments举行校验)。

  但是,假如你的确想为你的登录页面利用一分歧的定名,你能够经由过程增添以下的几行来修正Web.config文件。你能够改动认证体例-从缺省的Login.aspx改动为Authenticate.aspx:

<system.web>
<authenticationmode="Forms">
<formsname=".ASPXAUTH"
loginUrl="Authenticate.aspx"
protection="Validation"timeout="999999"/>
</authentication>
...

.使用AutoFormat:这是一种使用格局到Login控件的办法。

.增添一个形式:这是在使用黑色形式后的Login控件款式。
  把Login控件拖到Login.aspx上。你能够使用格局到Login控件以使它看起来更专业化。点击Login控件的"Smart"标签而且选择"AutoFormat..."链接(见)。

  选择黑色形式以后,Login控件应当看上往如所示。

  默许情形下,ASP.NET2.0利用Windows认证-假如你针对互联网用户那末这类体例不敷天真。因而,你应当把认证体例从默许的Windows体例改动到表单认证体例。

  增加一个Web.config文件到你的工程(在工程名字上单击右键,在办理计划资本办理器中并选择"AddNewItem....",从可用的列表选项当选择"WebConfigurationFile")。

  在Web.config中,经由过程增添以下的几行代码,从Windows认证体例改动到表单认证体例。你利用表单认证,如许你能够增加用户到你的Web站点而不必要在Windows下创立新的用户帐户。

<system.web>
<authenticationmode="Forms"/>
...  3、把一新用户增加到你的使用程序

  在你持续测试该使用程序之前,你必要为该使用程序创立一新用户。你可使用ASP.NETWeb站点办理工具(WAT)来增加一新用户到你的使用程序。为了激活WAT,选择"Website",然后选择"ASP.NETConfiguration"(见)。


.Web站点办理:该图显现如何激活WAT
  该WAT将被显现在一新的网页中。点击"Security"链接跳转到"Security"选项卡(见)。


.WAT:这里显现出WAT的用户接口。
  这个"Security"选项卡同意你实行义务-比方制造并删除用户,和为你的使用程序创立脚色和存取划定规矩。点击"Createuser"链接以增加一新用户到你的使用程序(见)。


.WAT平安:选择WAT中的"Security"选项卡可以让你办理平安特征
  为该新建用户帐户供应必须的信息(见0)。注重,这里的口令必需是数字、字母和特别的字符的分离。请确保最少为该口令供应7个字符。点击"CreateUser"以增加一个新用户。


0.增添用户:该图显现出WAT平安屏幕,在此你能够增加新的用户帐户。
  如今你已筹办好测试该使用程序了。在办理计划资本办理器当选择Default.aspx,然后按下F5键。点击"Login"链接以登录到使用程序中,然后输出帐户信息。当你乐成地登录到使用程序时,"Login"链接改动为"Logout"。1显现出这些事务按次。


1.登录:这三个屏幕显现在用户登录到使用程序时的完全历程。  4、创立新用户

  你必要设置CreateUserWizard控件的ContinueDestinationPageURL属性,如许在用户点击"Continue"按钮时,它就可以够被重定向到另外一个页面,如一个接待页面。

  除为用户创立用户帐户外,你也能够同意用户为本人创立新帐户。这在有些场合下很有效-为了存取你的使用程序,比方在一个会商论坛,你同意用户创立自在帐户。

  为了同意用户创立新帐户,可使用CreateUserWizard控件。把CreateUserWizard控件拖放到Default.aspx并使用黑色形式。该控件看往应当如2所示。


2.CreateUserWizard控件:这个控件让用户创立他们本人的新用户帐户。
  为测试使用程序,能够按下键F5。如今你本人能够创立一个新的用户帐户(见3)。供应需要的信息并点击"CreateUser"。

  5、用户信息的存储地位

  到今朝为止,你已看到了如何利用WAT和CreateUserWizard控件来创立用户。你大概想晓得这个信息被存储在哪儿。假如你如今检察办理计划资本办理器而且革新App_Data文件夹(右键点击它而且选择革新文件夹),你就会看到一个名为ASPNETDB.MDF的项(见3)。


3.你将在办理计划资本办理器的此处找到ASPNETDB.MDF数据库文件。

4.主动创立的用户:该图显现出一个用户创立一新的用户帐户。
  在用户创立乐成后,你会看到如5所示的屏幕。


4.创立帐户:在创立一新帐户后,用户会看到此屏幕。
  这个ASPNETDB.MDF是一个SQLServer2005速递数据库-默许地,ASP.NET2.0利用之来存储使用程序相干的数据比方用户帐户、设置,等等。为了剖析这个数据库,双击它则你会看到它的内容显现在DatabaseExplorer中(见6)。详细地说,aspnet_Membership和aspnet_Users表格将用来存储你在后面创立的用户帐户信息。为了寓目表格的内容,只须右击表格名字并选择"ShowTableData"。


6.数据库ASPNETDB.MDF:你能够在DatabaseExplorer格子中探究ASPNETDB.MDF数据库。
  ASP.NET2.0的一个很好的特性是不用要创立定制的数据库来存储你的用户的信息。而且你乃至不必要忧虑把用户的口令举行散列化处置来平安地存储它们。ASP.NET2.0主动地为你做这件事变。
<P>  6、会员供应者模子事情道理

  ASP.NET2.0利用一种新型的平安模子,称为会员供应者模子。这个模子经由过程使开辟者可以选择增加平安特征到他们的使用程序的体例来同意最年夜水平的天真性和扩大性。

  作为这个供应者模子扩大性的一个实例,请思索一下新的平安(登录)控件-你已在本文中看到过。这些控件、API和组成该新模子的供应者显现于下图中。


图会员供应者模子:该图显现了本文所会商的控件和会员供应者模子的各个层之间的干系。
  在最顶层上是各类的Web服务器控件,比方Login、LoginStatus和LoginView控件。在该控件上面是API-它们实行请求其完成的义务。Membership类卖力处置如增加和删除用户等的义务,而MembershipUser类卖力办理用户的信息如口令、口令成绩,等等。这些会员API利用会员供应者来保留或举行延续性存储。VisualStudio2005与一个缺省的会员供应者一同刊行-SQLServer2005ExpressMembershipProvider。会员供应者的脚色是充任会员API和数据存储之间的桥梁,以便信息可以被延续性存储而不必要开辟者编写低层代码来存取数据。

  假如微软供应的供应者不克不及满意你的必要,你大概能够扩大它们大概编写你本人的。比方,假如你想要用一个XML文档而不是一个干系数据库(比方SQLServer)来保留你的站点的会员信息,你能够编写你本人的供应者来完成与XML文件的对话。

  7、恢复丧失的口令

  恢复/扫除丧失的口令是你-作为一个办理员必要实行的一项一般义务。PasswordRecovery控件同意用户本人实行这项一般义务-经由过程主动地检索口令然后用电子邮件把它发送给用户。

  仅在你以一般文本存储口令而不是对口令的散列值举行存储时,口令恢复才是主要的。但是,默许情形下,在machine.config文件中的设置指定一切的口令,在把它们存储到成员数据库之前,要被散列化处置。Machine.config默许情形下也不同意口令恢复。

  为了在一般文本中存储用户口令,你能够在文件Web.config中增加以下出口:

...
<system.web>
<membership
defaultProvider="SqlProvider"
userIsOnlineTimeWindow="15">
<providers>
<clear/>
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="LocalSqlServer"
applicationName="SecurityControls"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="true"
passwordFormat="Clear"/>
</providers>
</membership>
...
  详细地说,你如今扫除了一切的会员供应者,然后增加一个新的SqlMembershipProvider。注重,为了同意口令检索,你必要设置enablePasswordRetrieval(为真)和passwordFormat(扫除之)属性。

  假如你设置了passwordFormat为散列化的,那末你必需把enablePasswordReset设置成假。

  如今拖动PasswordRecovery控件到Default.aspx,然后使用黑色形式。该PasswordRecovery控件如今看起来象7。


7.PasswordRecovery控件。经由过程利用这个控件,用户可以恢复他们健忘的口令。
  在PasswordRecovery控件的属性窗口中,设置MailDefinition属性下的"From"和"Subject"字段,如8所示。


8.PasswordRecovery控件属性:怎样在属性扫瞄器中,设置你的PasswordRecovery控件
  别的,你必要在你的呆板上设置好SMTP服务,以便用PasswordRecovery控件来发送一电子邮件。为在你的呆板上设置该SMTP服务,启动WAT,选择使用程序,然后选择设置SMTP电子邮件设置。

  为测试使用程序,按下F5键。你将被提醒输出你的用户名,然后是你的平安成绩。假如该平安成绩的谜底是准确的,那末口令将被以电子邮件情势发送给你;不然,在该页面将显现给你一毛病动静,如9所示。


9.恢复一丧失的口令:用户在恢复一个丧失的口令的过程当中,会看到这个屏幕序列
  为了平安缘故原由,经由过程电子邮件发送口令给用户不是一个好注重。因而,你的确必要当心地思索利用这一选择。
<P>  8、改动口令

  除恢复得到的口令外,你还必要同意用户改动他们的口令。在ASP.NET2.0中,你能够经由过程利用ChangePassword控件来完成这项义务。
既然一个用户只要在登录后才干改动他们的口令,那末,你如今将要在你的使用程序(该程序仅为认证的用户所存取)中创立一新文件夹。
你能够增加一新文件夹到你的使用程序-经由过程右击办理计划资本办理器中的工程名,然后选择"AddFolder",再选择"RegularFolder"。定名文件夹为"Members"。如今,在该新文件夹上增加一新的表单(右击"Members",然后选择"AddNewItem...")。定名该新建Web表单为ChangePassword.aspx(见0)。


0.这里显现的是在工程上增添文件夹后的办理计划资本办理器。
  为限定到成员文件夹的存取,增加以下<location>元素到Web.config。

...
</system.web>
<locationpath="Members">
<system.web>
<authorization>
<denyusers="?"/>
</authorization>
</system.web>
</location>
</configuration>
  本色上,在成员文件夹中的页面只能为认证过的用户(一切的匿名用户(?)将被否定存取)所存取。

  拖放ChangePassword控件到ChangePassword.aspx之上而且使用黑色形式(见1)。


1.ChangePassword控件:经由过程利用这个控件使你简单地完成让用户改动他们的口令。
  为了测试该使用程序,在办理计划资本办理器的成员文件夹当选择ChangePassword.aspx文件而且按下F5键。你将起首被重定向到login.aspx页面(为了认证)而且一旦被认证,ChangePassword.aspx页面将被装载。如今,你能够改动你的口令了(见2)。


2.改动口令:用户在用ChangePassword控件改动口令时大概会看到这个屏幕序列。实不相瞒,Java是我见过的执行效率最低的程序设计语言,前不久在CSDN论坛上有个评测,计算9999的阶乘,同样的循环算法,Java的耗时是.NET的5倍。

因胸联盟 发表于 2015-1-19 16:10:23

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

若相依 发表于 2015-1-28 07:52:17

ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。

山那边是海 发表于 2015-2-5 19:44:25

如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。

精灵巫婆 发表于 2015-2-13 08:53:21

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

灵魂腐蚀 发表于 2015-3-3 19:48:37

逐步缩小出错代码段的范围,最终确定错误代码的位置。

若天明 发表于 2015-3-11 13:19:24

平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。

小女巫 发表于 2015-3-18 14:45:39

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

简单生活 发表于 2015-3-26 02:27:48

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
页: [1]
查看完整版本: ASP.NET网页编程之争先试用ASP.NET 2.0中的新型平安控件