用户点击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) 方法。

用户点击Log In按钮后发生了什么?

Asp.net2.0提供了一系列登录相关组件,其中的Login控件使用起来可谓是简单之至,只需要在Login控件的Authenticate事件处理方法中验证用户输入的帐号、密码的正确性,然后把其中Au...
  • JOHNCOOLS
  • JOHNCOOLS
  • 2006年06月11日 18:13
  • 823

点击 Android Studio 的 build 按钮后发生了什么

首先,说明下这个问题的来历。 优秀的(Android)软件工程师是如何练成的 这篇文章提到了这个问题,于是就去思考下,也感谢前人的努力,让我们小菜鸟学习更加容易。你一定会问,点击Build后(我理...
  • Zheng548
  • Zheng548
  • 2017年02月05日 17:52
  • 1458

在浏览器中输入网址后都发生了什么

本文转载至: 输入网址后…… 如上图所示,为在浏览器中输入网址后的示意图。 1.浏览器发起DNS查询请求 在广域网中,我们是基于IP地址进行通信的。但通常客户访问的是一...
  • robertsong2004
  • robertsong2004
  • 2014年10月25日 14:29
  • 3092

malloc调用后 发生了什么

http://edsionte.com/techblog/archives/4174
  • guogaoan
  • guogaoan
  • 2014年09月10日 17:52
  • 1041

hello world背后的密秘

系统程序员成长计划-像机器一样思考(三) 作者联系方式:李先静 系统程序员成长计划-像机器一样思考(三) hello world的密秘 hello world是最经典的入门程序,该程序因B...
  • yyyyyyyyyywwwwwwwwww
  • yyyyyyyyyywwwwwwwwww
  • 2015年10月28日 13:13
  • 380

点击一个网页链接,然后发生了什么?

认识网页链接的组成 1. http是一个应用层的协议,详细的这里不介绍。 2. DNS解析:将www.baidu.com解析成目的IP地址,如果URL里不包含端口号,则会使用该协议的默认端口号。 在本...
  • guoguo527
  • guoguo527
  • 2016年08月03日 12:54
  • 1215

当你输入一个网址/点击一个链接,发生了什么?(以www.baidu.com为例)

>>>点击网址后,应用层的DNS协议会将网址解析为IP地址; DNS查找过程: 1.        浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。 2. ...
  • Random__Walker
  • Random__Walker
  • 2016年07月26日 22:12
  • 2095

行走后发生了什么

//Console_Main.hstatic int Way; //行走方向void Set_Events(int);//发生事件 //Console_Main.cpp#include #includ...
  • CSKJD
  • CSKJD
  • 2009年09月12日 16:18
  • 193

当你从浏览器地址栏中输入URL回车后发生了什么

此篇博客引用自一篇我认为很经典的文章,在此附上文章的地址。英文原版 1. 我们在浏览器中输入网址。 2. 浏览器查找域名对应的IP地址DNS查找过程为: 浏览器缓存->系统缓存->路由器缓存->I...
  • u013363501
  • u013363501
  • 2017年03月19日 20:53
  • 1501

DriverManager.getConnection后发生了什么

以前只是知道如果需要进行数据库连接,需要按照   Connection connection = null;   try {    Class.forName("com.mysql.jdbc...
  • zjlolife
  • zjlolife
  • 2013年06月17日 12:39
  • 1199
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用户点击Log In按钮后发生了什么?(续篇1)
举报原因:
原因补充:

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