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