繁体   English   中英

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

[英]How to set value to User.Identity.IsAuthenticated as false in Forms Authentication

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

FormsAuthentication.SetAuthCookie(username, true);

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM