Forms身份验证是否记得身份验

时间:2014-05-18 06:56:28

标签: c# asp.net .net forms-authentication

预览:在我的web.config中 - 我不使用表单身份验证。我自己设置表单cookie。

然而 - 有时我看到这样的代码:

/*1*/   protected void Application_AuthenticateRequest(Object sender, EventArgs e)
/*2*/    {
/*3*/     if (HttpContext.Current.User != null)
/*4*/       {
/*5*/        if (HttpContext.Current.User.Identity.IsAuthenticated)
/*6*/          {
/*7*/              //...
/*8*/              HttpContext.Current.User = ....
/*9*/              //...
/*10*/          }
/*11*/        }
/*12*/   }

查看第#5行 -

如果第8行即将设置身份验证,如何进行身份验证?

我的意思是 - 第8行是为特定请求设置身份验证的人,当请求完成时,没有"内存" 为将来的要求。 (cookie过期仅仅是 - 保留持久cookie的时间长度。)

问题

  • 在哪些情况下,行#5会返回true
  • 在哪些情况下,#3行会null

nb,此问题假定begin_request事件未设置任何内容,并且设置身份验证的唯一阶段是Application_AuthenticateRequest - 我不知道使用会员引擎。


占位符:

http://msdn.microsoft.com/en-us/library/aa289844(v=vs.71).aspx

enter image description here

1 个答案:

答案 0 :(得分:1)

如果登录cookie过期,第3行可以变为空。 如果用户已登录,则#5行为真。

看起来这两种方法是相辅相成的,事实上它们确实如此。检查HttpRequest.IsAuthenticated可能更容易。有关详细信息,请参阅此处:

asp.net membership IsApproved false but still allowing login

在这里:

http://msdn.microsoft.com/en-us/library/system.web.httprequest.isauthenticated%28loband%29.aspx

我对你的主要问题没有答案。遗憾。

除了下面的评论,您可能会发现此链接有助于解释为现有原则添加角色的能力。 http://msdn.microsoft.com/en-us/library/vstudio/5k850zwb%28v=vs.100%29.aspx