快速业务通道

ASP.NET安全问题--Forms验证的具体介绍(上篇)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
是和Forms相关的API。上篇文章谈过了。

FormsAuthentication类

这个类很重要。

还有一点注意的就是:因为FormsAuthentication和FormsAuthenticationModule名称很相似,很容易混淆。

它们之前的区别在于,FormsAuthenticationModule是一个HTTP模块;而FormsAuthenticate是一个类,它有很多的方法和属性。更加直白的说就是:它们之前没有什么关联,只是在Application_AuthenticateRequest事件中我们常常要调用FormsAuthenticate类的一些方法和属性。而且FormsAuthenticate的很多方法都是静态的方法,我们不会创建FormsAuthenticate类的实例。

还有一点要特别注意的就是FormsAuthenticate的Authenticate方法。

我们之前说过了,我们一般是在登录窗体中提交用户信息,然后服务器端验证提交的信息,我们在服务器端常常是去数据库中检查这些信息的正确性,但是去数据库或者其他的数据存储(如文件,活动目录)中去检查只是一种情况。

还有另外的情况。不知道大家是否记得web.config 中的一个配置的节点:

<authentication mode="Forms">
        <forms>
          <credentials>
            <user name="xiaoyang" password="xiaoyang"/>
            <user name="panyan" password="panyan"/>
          </credentials>
        </forms>
     </authentication>

如果我们在配置文件配置了上述的信息,那么我们就可以用Authenticate方法来检查提供了用户信息(用户名和密码)是否正确,如果我们没有在web.config配置用户的信息,也就是说我们是把信息保存在数据库等其他的地方,那么我们就不能Authenticate这个方法。当然我们很少用Authenticate这个方法,因为我们不可能把所有用户信息硬编码到配置文件中,但是还是要清楚这个方法。

另外我简单的介绍一些常用的方法,具体的使用我以后会讲述。

在FormsAuthenticate中使用频繁的是RedirectFromLoginPage方法。每当验证了用户的凭证后就会使用到这个方法,也就是我们之前说过的:跳转到我们最初请求的页面。

这个方法就这么简单的一"跳",但是其实在内部做了很多的事情:

1.为用户创建一个身份验证的票据

2.对身份验证的票据进行加密

3.创建一个cookie,把加密的票据保存在cookie中

4.向HTTP响应添加cookie,并且发送给客户端。

5.跳转,并且把用户重定向到最初请求的页面

另外FormsAuthenticate类还有很多的其他方法和属性:

FormsAuthenticate中涉及到客户端保存cookie的两个属性就是:

FormsCookieName:获取或者设设置cookie的名称

FormsCookiePath:获取或者设置cookie的url路径

其中FormsCookiePath属性有一点要注意:大多数的浏览器会在判断cookie是否要和请求一起发送时,用到cookie路径。(我们一般在配置文件配置path="/"),如果我们配置的path不是"/",那么这个cookie就不会和请求发送到服务器端.

FormsAuthenticate中和cookie操作相关的方法有:

Decrypt:提取身份验证cookie的加密信息,创建FormsAuthenticationTicket,也就是解密。

Encrypt:加密。从FormsAuthenticationTicket中获取信息,并且加密。以备我们之后把加密的信息写入cookie

GetAuthCookie:创建身份验证cookie,但是并不把它立即添加到HTTP响应中

SetAuthCookie:创建身份验证cookie,并且把它添加到Response.Cookie中。

RenewTicketIfOld:刷新身份验证cookie的生命周期

GetRedirectUrl:把用户重定向到他们最初请求的页面。

SignOut:使得当前的身份验证cookie过期。我们常用的注销功能。

FormsIdentity

大家现在应

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号