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

时间:2013-11-28 12:14:42

标签: c# login forms-authentication

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

FormsAuthentication.SetAuthCookie(username, true);

我希望用户的User.Identity.Name与用户有关,但User.Identity.IsAuthenticated为false。现在我认为它是真的。我想在特定登录后将其设置为true。

2 个答案:

答案 0 :(得分:4)

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

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

另外请考虑您是否真的想要这样做。很好的做法是,未经身份验证的用户是匿名用户,他们没有名字,而且内置身份类的工作方式非常复杂。

答案 1 :(得分:0)

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