【问题标题】:How to set value to User.Identity.IsAuthenticated as false in Forms Authentication如何在表单身份验证中将 User.Identity.IsAuthenticated 的值设置为 false
【发布时间】:2013-11-28 12:14:41
【问题描述】:

我有一种情况,我也想输入匿名用户的详细信息。所以我在个人资料中为他们创建了一个用户 ID。当我设置用户详细信息时

FormsAuthentication.SetAuthCookie(username, true);

我想要与 User.Identity.Name 和用户名的用户相关的详细信息,但 User.Identity.IsAuthenticated 为 false。现在我得到它是真实的。我只想在特定登录后将其设置为 true。

【问题讨论】:

标签: c# login forms-authentication


【解决方案1】:

FormsIdentity 类总是硬连线返回 true。所以这是无法改变的。只要名称不为空,即使是 GenericIdentity 也会返回 true。

一种解决方法是创建您自己的 IIdentity 实现,并替换 Global.asax 中 Application_PostAuthenticateRequest 事件中的表单身份。这是一种经过验证且安全的解决方案。

另外请考虑您是否真的想这样做。未经身份验证的用户是匿名的,他们没有姓名,这是一种很好的做法,并且非常详细地说明了为什么内置身份类会以它们的方式工作。

【讨论】:

  • 感谢您的回答。这帮助我找到了解决方案的替代方法。
【解决方案2】:

很遗憾,您不能将 User.Identity.IsAuthenticated 修改为 false。您可以创建自己的 cookie,也可以将此用户的字符串变量作为字典分配给会话。通过这种方式,您可以修改该值并针对特定场景手动销毁该值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-22
    • 2017-12-28
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多