簡體   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