Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 表单身份验证是否记住身份验证?_C#_Asp.net_.net_Forms Authentication - Fatal编程技术网

C# 表单身份验证是否记住身份验证?

C# 表单身份验证是否记住身份验证?,c#,asp.net,.net,forms-authentication,C#,Asp.net,.net,Forms Authentication,预览:在我的web.config中-我不使用表单身份验证。我自己做的 然而,有时我会看到这样的代码: /*1*/ protected void Application_AuthenticateRequest(Object sender, EventArgs e) /*2*/ { /*3*/ if (HttpContext.Current.User != null) /*4*/ { /*5*/ if (HttpContext.Current.User.I

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

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

/*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
    行将是
    空的
注意,此问题假设
begin\u request
事件没有设置任何内容,并且设置身份验证的唯一阶段是在
Application\u AuthenticateRequest
上-我不使用会员引擎


占位符:

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

看起来这两种方法是齐头并进的,事实上确实如此。检查
HttpRequest.IsAuthenticated
更容易。有关更多信息,请参见此处:

在这里:

不过,我对你的主要问题没有答案。对不起


除了我在下面的评论之外,您可能会发现此链接有助于解释在现有原则中添加角色的能力

正如你所说,这不是一个答案。第8行即将设置身份验证。因此,似乎stage
N
的第
#3
行记住了stage
N-1
中的身份验证(ps我不使用会员资格)我已经通过了您提供的链接,我想您错过了例行程序正在做的事情。第#8行没有设置身份验证,毕竟它正在将现有标识重新应用到它正在生成的新原理。你提供的链接甚至解释了这一点。新原则是旧原则的副本,但新原则包含与用户帐户关联的角色。这是因为您无法将角色添加到现有Principal对象的roles对象中。Craig,将IPPrincipal对象设置为
上下文的行为。用户
是导致IsAuthenticate获得true/false的原因。所以它确实设置了身份验证。但是我想我知道我的问题是什么。我不会在整个网站上使用表单身份验证。我将其设置为常规,并为每个请求设置Context.User值。但是(!)通过表单身份验证,它会自动执行。因此,如果条件。重新阅读你的评论-你是对的。只是增加角色-但是(另一个问题)。角色不保留在cookie中。那么它们是从哪里来的呢?是的,这听起来很正确。通过将信息存储在字典中,然后根据用户cookie提取这些信息,您可以通过这种方式获得他们的角色数据。假设您正在将角色数据附加到上下文。用户对象,则所有操作都应正常工作。根据字典的存储位置,可能会对性能造成影响,但最终应该是可以忽略的。