在检查用户的凭据并确认它们是正确的之后,我使用 FormsAuthentication.SetAuthCookie("Username", false);
来验证用户。
然后在母版页中,我使用 Page.User.Identity.IsAuthenticated
来确保我们处理的是登录用户而不是访客。
问题在于首先设置身份验证cookie。当我设置 auth cookie 后,我立即运行一个方法,该方法使用 Page.User.Identity.IsAuthenticated
将欢迎消息从通用的“Welcome, guest!”更改为向更个人化的消息“欢迎,用户名!”信息。这在我转到另一个页面之前不起作用,所以我知道登录过程有效,但似乎在刷新或重定向发生之前我无法访问我需要的信息。
我是否需要在设置身份验证 cookie 后重定向用户,以便使用 Page.User.Identity.IsAuthenticated
更改消息?
最佳答案
我以前看过这个,所以我知道答案是肯定的。 (例如,是的,您确实需要重定向用户以正确使用 Page.User.Identity.IsAuthenticated
)
我想的原因是因为 IsAuthenticated
评估当前请求,当当前请求第一次进来时,它被记录为未验证。
您需要做的是在不检查 IsAuthenicated
的情况下应用上述方法中的任何逻辑(使其假设为真)。
现在我不知道你的方法的细节,无法建议如何重构它来解决这个问题,但你可以将“Do Stuff”部分拆分成一个单独的函数,然后你可以直接从您登录功能绕过身份验证检查。
编辑:为了支持我的假设,您可以 read this page .
有趣的部分:
The forms-authentication ticket supplies forms-authentication information to the next request made by the browser.
关于c# - FormsAuthentication.SetAuthCookie() 是否需要重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10190634/