2010-02-04 102 views
40

MSDN代碼示例描述:以下代碼示例使用IsAuthenticated屬性來確定當前請求是否已通過身份驗證。如果未通過身份驗證,則請求會重定向到其他頁面,用戶可以在其中將憑據輸入到Web應用程序中。這是在應用程序的默認頁面中使用的常用技術。Request.IsAuthenticated如何工作?

這是偉大的,但沒有細節或任何...

它到底是什麼檢查呢?我如何將其設置爲true?

加倍努力:我會在哪裏找到更詳細的文檔?

回答

52

感謝Google,我發現@keyboardP的緩存版本指的是his answer。由於原始鏈接已損壞(2012-12-06),因此我將此答案/帖子張貼在此處作爲其他人的參考。

Original question的答案下面是指:

我有一個是給我一個適合基於表單的應用程序。我注意到,在 一個IsAuthenticated屬性爲True的位置,它現在是 錯誤,並且未按預期工作。我想知道如果我有一個 設置是無效的?由丹尼爾·肯特 constitues在記錄什麼

答案 -

誰能告訴我什麼設置IsAuthenticated屬性爲True:

Request.IsAuthenticated不只是形式authentciation - 它是有效的 無論使用何種類型的身份驗證(Windows,Passport, 表單或我們自己的定製方案)

HttpRequest.IsAuthenticated將在使用時r請求 已通過身份驗證。實質上,該屬性提供與Context.User.Identity.IsAuthenticated相同的 信息。

在請求開始時,Context.User.Idenity包含一個GenericIdentity 空用戶名。該對象的IsAuthenticated屬性將 返回false因此Request.IsAuthenticated將爲false。當 認證模塊處理Application_AuthenticateRequest事件和 successfuly認證用戶它取代了GenericIdentityContext.User.Identity一個新的IIdentity對象將從 其IsAuthenticated財產返還true。然後Request.IsAuthenticated將返回true

在表單身份驗證的情況下,表單身份驗證模塊使用 身份驗證Cookie中包含的加密身份驗證憑證來驗證用戶身份。一旦完成此操作,它就會將Context.User.Identity中的 GenericIdentity替換爲FormsIdentity對象,即 從其IsAuthenticated屬性返回True

因此,設置IsAuthenticatedtrue是在記錄實際上是不同的。至於 傑夫說,在登錄窗體身份驗證時產生的 身份驗證票證和發送到客戶端的cookie的發生。 (RedirectFromLoginPageSetAuthCookie)我們正在討論的與 IsAuthenticated是每個頁面請求發生的身份驗證。 登錄發生在用戶輸入其憑據併發出 票證時,每次請求都會進行身份驗證。

+0

這裏是谷歌的緩存答案的鏈接:https://webcache.googleusercontent.com/search?q=cache:t4JNfp8peQIJ:https://forums.asp.net/t/1416811.aspx%3FQuestion%2Babout%2Bmethods% 2Bto%2Bdetect%2Bif%2BA%2Buser%2之二%2Blogged%2Bin – tylerlindell 2016-11-16 22:39:34

8

丹尼爾肯特here有一個非常詳細的帖子。 (摘錄)

Request.IsAuthenticated是 不只是形式authentciation - 它 是有效的,無論是什麼類型 認證的正在使用(在Windows, 護照,表格或自己的自定義 方案)

當發出請求 的用戶已通過身份驗證時,HttpRequest.IsAuthenticated將爲 爲true。實質上, 此屬性提供了與 相同的 信息Context.User.Identity.IsAuthenticated。

+4

鏈接不幸中斷。我通過Google找到了一個緩存版本,並在不同的答案中發佈了其內容,以便更好地進行格式化。 – Oliver 2012-12-06 16:31:24