我今天的WebForms日真的很糟糕!
我有一个使用Forms身份验证的成熟WebForms Web应用程序。由于某些未知原因,我的应用程序已开始显示Request.IsAuthenticated
(在Application_BeginRequest
中的Global.asax
函数),尽管进入登录页面,成功登录并调用FormsAuthentication.RedirectFromLoginPage()
。< / p>
我无法弄清楚出了什么问题。以下是我所做的检查。我希望有人可能会指出我在这里没有检查过的东西:
web.config
的身份验证部分如下:
<authentication mode="Forms">
<forms loginUrl="~/Login" timeout="120" cookieless="UseCookies" defaultUrl="~/ExitPoint.aspx?Page=Home" />
</authentication>
web.config
的授权部分如下:
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
对于登录/退出等网页,我有:
<location path="Login">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
登录时,我已通过身份验证并逐步完成身份验证过程。结束时:
FormsAuthentication.RedirectFromLoginPage(userID, createPersistentCookie: true);
// Includes call to SetAuthCookie()
其中userID是字符串值“768”。
下次请求时,我的浏览器会显示加密的会话Cookie:
Name=.ASPXAUTH
Value=FFC592.....
Expires=2016-05-16T15:41:58.817Z (basically "now"+1 hour)
Path=/
Domain=localhost
HTTP=Yes
Secure=(blank i.e. No)
在Request.IsAuthenticated
Global.asax
方法中记录Application_BeginRequest()
值正在输出“False”(bool)
我还需要检查一下,看看可能会出现什么问题? 感谢
答案 0 :(得分:1)
我认为这正是预期的结果。在webforms
请求管道中,AuthenticateRequest
事件在BeginRequest
事件之后引发,因此请求尚未在BeginRequest
事件中进行身份验证。
有关管道的说明,请参阅(例如)here。或只是谷歌asp net webforms request pipeline
,你会发现很多链接......
我链接到的页面的部分副本: