|

3. Mode=”Passport”
对于这种模式下,ASP.NET引擎会使用Microsoft Passport的Authentication机制,理论上这种模式将是最OK和省力的,不过照目前看来,想在ASP.NET下实现Passport还不是一件轻松的事情,VS.NET Beta 2的类库并没有完全实现Passport 2.1的功能(PassportIdentity). Microsoft目前唯一展示的是在MSDN上的ColdStorage例子,实现上基本基于Passport 1.4而且像使用DirectX 一样,还需要专门的一个DLL。有资料显示VS.NET RC2之后的类库已经实现了原来未实现的功能,但就目前看来缺少这方面的资料,所以把这方面的信息留给Microsoft和Passport 3.0吧,以后的时间我们会再来考察,对于Passport我深有信心,而且只要在Microsoft平台,我们都可能无法逃避面对Passport.
有关ColdStorage的Passport的信息,可以参见下面的文章:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncold/html/storageauthentication.asp
4. Mode=”Forms”
这种模式下,我想每个开放人员将获得最大的灵活性和控制,而且从现在看来,这是最实用和可行的一种方式。先看一个比较简单的例子:
1. 在Config.Web 文件中进行下面的设置:
<authentication mode="Forms">
<forms name=".ASPXUSERDEMO" loginUrl="login.aspx" />
</authentication>
loginUrl=”string” 表明未通过Authentication的请求将被定向到的页面,你可以自行设置。
2. 然后点击或在login.aspx 文件的Login按钮的Click的事件处理程序中写入下面的代码:
void Login_Click(Object sender, EventArgs E) {
// authenticate user: this samples accepts only one user with
// a name of new2001@msn.com and a password of ''''ccBoy''''
if ((UserEmail.Value == "new2001@msn.com") && (UserPass.Value == "ccBoy")) {
FormsAuthentication.RedirectFromLoginPage(UserEmail.Value, PersistCookie.Checked);
}
else {
Msg.Text = "Invalid Credentials: Please try again";
}
}
这里我们使用的硬编码,目前只允许new2001@msn.com 和 ccBoy作为登录的用户。测试时我们并不直接访问Login.aspx而是请求default.aspx这个页面,ASP.NET使用其Authentication机制,将重新定向到Login.aspx,当用户输入的信息被接受则返回最初请求的default.aspx.方式上由于我们使用dotNET的WebUI控件,更加对象化了,当判断通过FormsAuthentication 执行RedirectFromLoginPage 方法,这个函数发出Cookie,并把用户重新定向到最初请求的资源。这种方式下ASP.NET AP做了一半的工作,事实上它是被动的完成RedirectFromLoginPage
结果如图:

下面我们修改config.web文件,使得Authentication 从config.web中获得信息和发生
1. 先设置config.web 文件
<authentication mode="Forms">
<forms name=".ASPXUSERDEMO" loginUrl="login.aspx" >
<credentials passwordFormat="Clear">
<user name="ccBoy@msn.com" password="ccboy"/>
</credentials>
</forms>
</authentication>
<credentials></credentials>中指定访问系统资源的用户名和密码,并且可以对加密的密码进行定制和管理(建议实际应用中不要将用户名和密码放在这里面)
Passwordformat可以是“Clear”、“SHA1”、“MD5”等值。
Clear:用纯文本保存密码。用户和密码不需要进一步的转换可以直接使用和用户进行比较
上一页 [1] [2] [3] [4] 下一页 |