如何在Forms身份验证中将User.Identity.IsAuthenticated的值设置为false

3

我有一个情况,需要为匿名用户输入详细信息。因此,我在个人资料中为他们创建了一个用户ID。当我设置用户详细信息时

FormsAuthentication.SetAuthCookie(username, true);

我希望获取与User.Identity.Name相关的用户详细信息,包括用户名,但是将User.Identity.IsAuthenticated设置为false。目前我得到的是true。我希望在特定的登录后才将其设置为true。


我在链接 https://dev59.com/rHNA5IYBdhLWcg3wKam3#10524305 找到了解决方法。 - Shiva Saurabh
2个回答

4
FormsIdentity类已经预先设定为始终返回true。因此,这是无法改变的。即使GenericIdentity在名称不为空时也会返回true。
解决方法是创建自己的IIdentity实现,并在Global.asax中的Application_PostAuthenticateRequest事件中替换表单身份验证。这是一个被证明安全可靠的解决方案。
同时,请考虑是否真的需要这样做。未经身份验证的用户是匿名的,他们没有名字,内置的身份验证类的工作方式非常复杂。

谢谢你的回答。这帮助我找到了解决问题的另一种方法。 - Shiva Saurabh

0

很遗憾,您无法将User.Identity.IsAuthenticated修改为false。您可以创建自己的cookie,或者将字符串变量分配给此用户作为字典存储在会话中。通过这种方式,您可以修改该值,并手动销毁特定情况下的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接