在程序中使用表单验证需要以下步骤:

1. 在web.config文件中配置表单验证。

将web.config文件中的<authentication/>配置节的mode特性设为Forms就可以使用表单验证了:

<authentication mode="Forms">
<forms name="AuthCookieName" loginUrl="login.aspx" timeout="30" slidingExpiration="false" defaultUrl="default.aspx">
</forms>
</authentication>

forms主要选项说明:

name:    cookie的名称,默认值为.ASPXAUTH;

loginUrl:   指定登录页面;

timeout:    过期时间(分钟),默认为30;

defaultUrl:  指定登录后的默认返回页面;

domain:   指定cookie的有效域;

 

2. 实现代码

首先需要引入命名空间:

using System.Web.Security;

 

if (IsValidUser(username))
{
FormsAuthentication.RedirectFromLoginPage(username, false);
}

ForumsAuthentication.RedirectFromLoginPage()

这个方法同时执行了以下任务:
1. 为用户创建了一个验证票据;
2. 对验证票据中的信息进行加密;
3. 创建一个Cookie来保存加密的票据信息;
4. 将Cookie添加到HTTP响应,并发送至客户端;
5. 重定向至web.config配置的默认页面

PS:cookie通过一个机器特定的密钥来加密,这个密钥在machine.config中定义。如果在一个WEB集群中,你需要保证所有的服务器使用同样的密钥,这样各服务器才能够互相解密所创建的cookie。

 

若需要更灵活地设置Cookie的过期时间,可使用FormsAuthentication的GetAuthCookie()方法创建持久化Cookie,设置过期时间,然后自已将Cookie写到HTTP响应中去。

将上面的代码稍做修改即可:

if (IsValidUser(username))
{
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, true);
authCookie.Expires = DateTime.Now.AddDays(10);
Response.Cookies.Add(authCookie);
Response.Redirect(FormsAuthentication.GetRedirectUrl(username, true));
}

 

验证是否成功:  Request.IsAuthenticated

已验证用户名称: HttpContext.Current.User.Identity.Name

删除验证:    FormsAuthentication.SignOut();

 

FIN




posted on 2011-10-27 22:04  elycir  阅读(299)  评论(0编辑  收藏  举报