ASP.NET Forms 身份验证控制流
浏览器和 HTTP 操作 |
服务器答复 |
||
从服务器请求受保护的资源。HTTP 操作为: GET /default.aspx |
如果不存在身份验证 Cookie,则将请求重定向到登录页以收集凭据。使用 RETURNURL 作为关键字,将有关起始页的信息放在查询字符串中。服务器 HTTP 答复为: 302 Found Location: http://samples.microsoft.com/logon.aspx?RETURNURL=/default.aspx |
||
重定向到登录页。HTTP 操作为: GET /logon.aspx?RETURNURL=/default.aspx |
返回登录页。为安全起见,建议对登录页使用安全套接字层 (SSL),以阻止用户凭据以明文形式发送。服务器 HTTP 答复为: 200 OK |
||
用户在登录页输入凭据后,提交该页。HTTP 操作为: POST /logon.aspx?RETURNURL=/default.aspx |
验证用户凭据,如果凭据通过身份验证,则将浏览器重定向到在 QueryString 中作为 RETURNURL 变量指定的原始 URL。默认情况下,身份验证票证以 Cookie 的形式发出。
服务器 HTTP 答复为: 302 Found Location: /default.aspx |
||
遵循重定向操作并再次请求原始资源。HTTP 操作为: GET /default.aspx |
如果用户通过身份验证,则允许访问并授予身份验证 Cookie,该 Cookie 中包含身份验证票证。同一浏览器会话的以后的请求将在模块检查该 Cookie 时进行身份验证。可以创建可用于以后的会话的持久性 Cookie,但该 Cookie 的使用期截止到到期日期为止。服务器 HTTP 答复为: 200 OK Set-Cookie: ASPXTICKET=ABCDEFG12345;Path=/ 注意,Cookie 路径设置为 /。由于 Cookie 名称区分大小写,因此这有助于防止站点中的 URL 的大小写不一致。例如,如果路径设置为 /SavingsPlan,而链接包含 /savingsplan,由于浏览器不会发送 Cookie,用户将被迫重新进行身份验证。 |