用户点击Log In按钮后发生了什么?(续篇1)

转载 2006年06月11日 18:15:00
上篇我们说到在Login控件的AttemptLogin方法中,最终使用了FormAuthentication的SetAuthCookie(string userName, bool createPersistentCookie)
来设置Cookie,那具体是怎么工作的呢?让我们看看它的代码:

1 public static void SetAuthCookie(string userName, bool createPersistentCookie)
2 {
3       FormsAuthentication.Initialize();
4       FormsAuthentication.SetAuthCookie(userName, createPersistentCookie, FormsAuthentication.FormsCookiePath);
5 }

    嗯,首先调用Initialize()方法初始化一把,察看Initialize()的代码得知它的主要作用是设置一下FormAuthentication的基本参数,包括_FormsName、_RequireSSL、_FormsCookiePath、_TimeOut、_LoginUrl、DefaultUrl 等,最后把_Initialized内部状态设置成true(其中使用了线程同步锁)。

    然后使用由Initialize()方法中设置好的FormsAuthentication.FormsCookiePath属性来调用FormsAuthentication.SetAuthCookie(userName, createPersistentCookie, FormsAuthentication.FormsCookiePath)方法,让我们先看看MSDN怎么描述这个方法的功能:

    Creates an authentication ticket for the supplied user name and adds it to the cookies collection of the response, using the supplied cookie path or the URL.

    再来看看这个方法的代码:

 1 public static void SetAuthCookie(string userName, bool createPersistentCookie, string strCookiePath)
 2 {
 3       
 4       HttpContext context1 = HttpContext.Current;
 5       if (!context1.Request.IsSecureConnection && FormsAuthentication.RequireSSL)
 6       {
 7             throw new HttpException(SR.GetString("Connection_not_secure_creating_secure_cookie"));
 8       }
 9       bool flag1 = CookielessHelperClass.UseCookieless(context1, false, FormsAuthentication.CookieMode);
10       HttpCookie cookie1 = FormsAuthentication.GetAuthCookie(userName, createPersistentCookie, flag1 ? "/" : strCookiePath, !flag1);
11       if (!flag1)
12       {
13             HttpContext.Current.Response.Cookies.Add(cookie1);
14             context1.CookielessHelper.SetCookieValue('F'null);
15       }
16       else
17       {
18             context1.CookielessHelper.SetCookieValue('F', cookie1.Value);
19       }
20 }
21 

    其中CookielessHelperClass.UseCookieless(...)方法的功能是判断当前请求上下文是否接受本地Cookie(不接受的话返回true),如果请求上下文接受本地Cookie则直接把Cookie加到请求上下文中,如果请求上下文不接受本地Cookie则把Cookie的值放入名为“F”的Cookie值中,以待后用。
    读到这里,我们已经清楚地知道用户点击Log In按钮后发生了什么事、Asp.net 2.0是如何记录登录信息的了,但是如果想更清楚地知道这个Cookie是如何生成的,还得去读读 FormsAuthentication.GetAuthCookie (String, Boolean, String) 方法。

相关文章推荐

FormsAuthentication.SetAuthCookie 方法 (String, Boolean)

FormsAuthentication.SetAuthCookie 方法 (String, Boolean)? 为提供的用户名创建一个身份验证票证,并将其添加到响应的 Cookie 集合或 URL。 ...

解决:在点击用户退出登录时,再按浏览器的后退按钮,仍然能够看到之前的页面

之前搜了好多解决方案,基本都是要么在jsp中清除缓存,要么在Action中清除缓存,都没尝试成功,最后找到了一种方便的方法—— 在框架frameset制作的管理系统中,在index.jsp中加入下面...

关于Asp.Net中避免用户连续多次点击按钮,重复提交表单的处理

Web页面中经常碰到这类问题,就是客户端多次点击一个按钮或者链接,导致程序出现不可预知的麻烦. 客户就是上帝,他们也不是有意要给你的系统造成破坏,这么做的原因很大一部分是因为网络慢,点击一个操作之后...

【北大天网搜索引擎TSE学习笔记】第3节——从用户点击“搜索”按钮开始

在第一节中已经将查询服务子系统搭建起来,可以在天网搜索引擎的首页中输入搜索字符串、点击搜索按钮并得到搜索的结果页面。那后台到底是怎么处理的呢?怎么从网页获取用户输入然后调用搜索程序进行搜索呢?大家在这...

cad关闭时获取用户点击了是还是否保存文件按钮。

cad关闭时获取用户点击了是还是否保存文件按钮。最近做的一个项目用户想在关闭cad文件时弹一个判断对话框,如果保存文件弹对话框,不保存时不弹。鉴于这个需求一开始的想法是获得系统提示保存对话框句柄来获得...
  • qqider
  • qqider
  • 2017年03月24日 13:35
  • 250

Androd4.2实现点击按钮每次加1

  • 2013年05月05日 18:55
  • 979KB
  • 下载

注册或者点击按钮时,防止用户重复提交数据

asp.net实现点击按钮后设按钮不可用并提交 客户端加载的时候,重新将这个操作再启动 function controlButton(flag) { ...

【asp.net中如何防止用户重复点击提交按钮】

 asp.net 中防止因为网速慢等影响交互的问题导致用户可能点击多次提交按钮,从而导致数据库中出现多条重复的记录,经过亲自验证在网上找的方法,找到两个切实可行的方法: 第一种方法1. ...

ExtJS 学习笔记 示例1-点击按钮弹出一个新窗体,避免重复创建

本人只是一枚编程界的小学生,虚心求教。代码仅供参考,勿喷! 1、代码结构图 2、代码示例windows_001.jsp 示例1-点击按钮弹出一个新窗体,避免重复创建 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用户点击Log In按钮后发生了什么?(续篇1)
举报原因:
原因补充:

(最多只允许输入30个字)