快捷搜索:

Login 控件详解

自 ASP.NET 2.0 起,微软便供给了一套权限治理机制,

这套机制主如果以 Membership 和 Role 来实现的,

当然,供给直接应用的控件不停是微软所长于的,

以是对付权限治理机制,微软也有现成的控件可以应用的,

在这里先是从 Login 登岸控件开始吧,

前面的两篇文章也提到过,要想应用 Membership 和 Role 来实现权限治理,

必须要先注册一个数据库给这个网站(不懂得的可以看前面的两篇博文),

天经地义的,应用 Login 也必须得自己先指定一个网站的数据库给他啊,

不然,鬼晓得它去哪里拿用户名和密码来匹配呢,

以是照样得先完成网站数据库的注册(前面的文章中有这方面的内容)

注册完今后呢,

便会在您指定的数据库中创建 11 个数据表和 n 多的存储历程

来完成微软供给的权限治理机制,

存储历程应该有差不多有 60 ~ 100 个,

在这里顺便解释一下为什么会有那么多的存储历程吧,

着实呢,微软是一种开放的模式来完成 Membership 和 Role 权限治理机制的,

假如将所有的 SQL 命名直接写在类的措施中,那么这个就变得很逝世了,

由于,假如我换个数据库,我要应用 Oracle 呢?那么这些类也就全没有感化了,

而写为存储历程的话,假如我改为 Oracle 数据库,

那么我只必要把这些存储历程稍加改动便完成了

数据库从 Sql Server 到 Oracle 的转变了。

还有便是要将 web.config 验证模式改动为 Forms 验证,否则掉足了,

您都不晓得是咋回事的啊!!!

在应用 Login 控件时,还有一点必要声明的便是,

本身对用户的验证这些操作而言,

并不是由 Login 控件完成的,而是在其背后有 Membership 和 Role 支持,

Login 控件所做的可以这么说,只是一个 UI ,然后吸收用户名,密码等参数,

然后将这些参数通报给 Membership 和 Role 这些类来做处置惩罚,

以是,正在起感化的是 Membership 和 Role , 而不是 Login 控件本身。

接下来就对 Login 控件的属性和事故做一个先容吧,

属性的话,

DistinationPageUrl---------指定当用户登录成功后会跳转到的页面

FailureAction---------------指定当登录掉败时,要发生的动作,

有 Refresh 和 RedirectToLoginPage 两个选项

还有诸多的属性是在属性窗口中直接看不到的,

您可以应用 MSDN 查看或者直接调用其代码定义窗口,

再看几个主要的事故吧

Authenticate--------自定义的验证,不适用默认的 Membership 和 Role 来实现验证,

而是自己编写 ADO.NET 代码实现验证

LoggingIn-----------用户按下登录按钮时的操作(此时还没有履行验证)

LoggedIn------------用户按下登录按钮后履行验证且经由过程后触发

LogginError----------在验证历程中呈现差错时激发事故

再对上面的一些属性进行解释:

首先是 DistinationPageUrl ,假如这个属性没有设置的话,

那么应用 Login 成功登录后,

会自动跳转到在 web.config 中定义的 defaultUrl

而假如您已经定义了 DistinationPageUrl 的话,

那么在登录成功后,便会跳转到由这个 DistinationPageUrl 所定义的页面上,

而不会跳转到 web.config 中定义的 defaultUrl 指定的页面上了。

还有便是对付 Login 控件,您可以把它转换为模板,

这样的话,您便可以充分的自定义 Login 的用户界面了,

接下来就看一个应用了 Login 的 Demo 了

首先是我定义了三个页面

一个是 Login.aspx

一个是 Main.aspx

一个是 Demo__2.aspx

然后再看一下 web.config 中的一些设置设置设备摆设摆设吧,

从设置设置设备摆设摆设中可以看出,我设置了 loginUrl 属性,

这个属性的感化便是当用户没有经由过程验证时,

应用 FormsAuthentication.RedirectToLoginPage(); 将要跳转到的页面,

而后我又定义了 defaultUrl ,在上面也说清楚明了这个属性的应用,也

便是当用户经由过程验证且没有设置 DestinationPageUrl 时将要跳转到的页面,

而后便是 path 属性了,path=”/” 代表应用本地 localhost ,

其其实这个 forms 标记中还有很多很紧张的属性,不过大年夜家根据命名也可以猜出个大年夜概了,

然后呢,我就经由过程在 Login.aspx 中添加一个 Login 控件,并且将其转换为模板,

设置一下外不雅属性,

便可以获得下面的这个界面了

再看一下 Main.aspx的 Code-Behind 和 Demo__2.aspx 的 Code-Behind,

(两个的 Code-Behind 是一样的)

接下来就看演示了,

首先,我先浏览 Demo__2.aspx 页面,可以发明其会自动跳转到 Login.aspx 页面上,

(这是由于在 web.config 中设置的 loginUrl 起了感化)

然后我便完成登录,登录成功后,其又会自动跳转到 Demo__2.aspx 页面上,

然后便是我直接应用 Login.aspx 页面了,我一开始就浏览 Login.aspx 页面,

登录成功后,其又会自动跳转到 Main.aspx 中,

(这是 DestinationPageUrl 属性起了感化)

以上只是简单的对 Login 控件有了一个简单的先容,

不过对付此中的一些必要留意的地方,比如 web.config 中的设置,

照样要引起留意的,

着实, Login 控件的功能还远不止这些,感兴趣的可以好好的去钻研一下了。

转自:http://www.cnblogs.com/QinBaoBei/archive/2010/03/01/1675667.html

您可能还会对下面的文章感兴趣: