c# - FormsAuthentication.SetAuthCookie() 是否需要重定向?

标签 c# asp.net forms-authentication

在检查用户的凭据并确认它们是正确的之后,我使用 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/

相关文章:

c# - .Net 3.5 日志记录

javascript - 如何从浏览器读取客户端的机器/计算机名称?

c# - 使用 LINQ 查找 MAX/MIN 列表项?

sql-server - 如何在 SSRS 2008 RS 中配置/启用基于表单的身份验证

c# - 如果声明是接口(interface),编译器无法识别泛型中的属性

c# - 提取分配给文件的正确 16x16 图标?

c# - 如何将 Char[] 或 String 转换为 Char* 以在 C# 中初始化 SecureString?

asp.net - IIS Express 选项在 Visual Studio 2010 中不可用

asp.net - 安装 .net 4.5 自定义表单后,身份验证中断

.net - 如何在 ASP.NET MVC 中重定向到动态登录 URL