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

转载 2006年06月11日 18:13:00
Asp.net2.0提供了一系列登录相关组件,其中的Login控件使用起来可谓是简单之至,只需要在Login控件的Authenticate事件处理方法中验证用户输入的帐号、密码的正确性,然后把其中AuthenticateEventArgs类型的参数的Authenticated属性改成true就算用户登录成功了:

1 protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
2 {
3     if (UserIsValid(Login1.UserName, Login1.Password))
4     {
5         e.Authenticated = true;
6     }
7 }

    嗯,用户点击“Log In”按钮后发生了什么?凭什么Asp.net运行环境就相信用户已经登录成功,在以后的请求中不会中途调转到“登录”界面?我们就来看看吧。
    用Lutz Roeder's .NET Reflector打开System.Web.dll程序集,在System.Web.UI.WebControls名称空间里Login类的AttemptLogin方法中,你看到了什么?

 1 private void AttemptLogin()
 2 {
 3 
 4             LoginCancelEventArgs args1 = new LoginCancelEventArgs();
 5             this.OnLoggingIn(args1);
 6             if (!args1.Cancel)
 7             {
 8                   AuthenticateEventArgs args2 = new AuthenticateEventArgs();
 9                   this.OnAuthenticate(args2);//这里将执行我们的Login1_Authenticate方法
10                   if (args2.Authenticated)
11                   {
12                         //嘿,只是设置了一下AuthCookie而已
13                         FormsAuthentication.SetAuthCookie(this.UserNameInternal, this.RememberMeSet);
14                         this.OnLoggedIn(EventArgs.Empty);
15                         this.Page.Response.Redirect(this.GetRedirectUrl(), false);
16                   }
17 
18             }
19       }
20 }

    真的很简单。

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

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

点击 Android Studio 的 build 按钮后发生了什么(阿里巴巴)

开发完Android工程后,点击Android Studio的run按钮后就可以在build/outputs下面得到我们的.apk文件,这背后的英雄就是gradle构建工具。 Android中的gr...
  • yangxi_001
  • yangxi_001
  • 2017年11月23日 11:32
  • 161

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

上篇我们说到在Login控件的AttemptLogin方法中,最终使用了FormAuthentication的SetAuthCookie(string userName, bool createPer...
  • JOHNCOOLS
  • JOHNCOOLS
  • 2006年06月11日 18:15
  • 747

malloc调用后 发生了什么

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

hello world背后的密秘

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

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

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

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

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

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

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

行走后发生了什么

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

DriverManager.getConnection后发生了什么

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

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