2010-02-04 12 views
40

Kod MSDN Przykładowy przykład: Poniższy przykładowy kod wykorzystuje właściwość IsAuthenticated w celu ustalenia, czy bieżące żądanie zostało uwierzytelnione. Jeśli nie zostało uwierzytelnione, żądanie jest przekierowywane na inną stronę, na której użytkownicy mogą wprowadzać swoje poświadczenia do aplikacji sieci Web. Jest to powszechna technika używana na domyślnej stronie aplikacji.Jak działa Request.IsAuthenticated?

To jest wielki, ale żaden szczegół lub cokolwiek ...

Czym dokładnie jest to sprawdzanie? Jak ustawić to na true?

Idź dalej: Gdzie znajdę bardziej szczegółową dokumentację na ten temat?

Odpowiedz

52

Dzięki Google znalazłem buforowaną wersję post @keyboardP, o której mowa w his answer. Zamieszczam tę odpowiedź/wpis tutaj jako odniesienie dla innych, ponieważ pierwotny link jest uszkodzony (2012-12-06).

Original question że odpowiedź poniżej odnosi się do:

mam formularzy zgłoszeniowych w oparciu o który daje mi pasuje. Zauważyłem, że w lokalizacji miejsce, w którym właściwość IsAuthenticated była True, było teraz fałszywe i nie działało zgodnie z oczekiwaniami. Zastanawiam się, czy mam ustawienie , które jest nieprawidłowe?

Czy ktoś może mi powiedzieć, co ustawia właściwość IsAuthenticated True - co constitues zalogowaniem

Odbierz Daniel Kent.

Request.IsAuthenticated nie tylko dla formy authentciation - to ważny bez względu na to, jaki rodzaj uwierzytelniania jest używany (Windows, Passport, Formularze lub nasz własny system niestandardowy)

będzie prawdziwy, gdy użycie r sprawdzenie autentyczności żądania . Zasadniczo ta właściwość zapewnia tę samą informację o nazwie jako Context.User.Identity.IsAuthenticated. Na początku żądania Context.User.Idenity zawiera GenericIdentity z pustą nazwą użytkownika.Właściwość IsAuthenticated dla tego obiektu będzie wracać false, więc Request.IsAuthenticated będzie false. Gdy moduł uwierzytelniania obsługuje zdarzenie Application_AuthenticateRequest i successfuly uwierzytelnia użytkownika to zastępuje GenericIdentity w Context.User.Identity z nowym IIdentity obiektu, który powróci true z jego IsAuthenticated nieruchomości. Request.IsAuthenticated następnie zwróci true.

W przypadku uwierzytelniania za pomocą formularzy moduł uwierzytelniania formularzy wykorzystuje zaszyfrowany bilet uwierzytelniający zawarty w pliku cookie uwierzytelniającym w celu uwierzytelnienia użytkownika. Gdy to zrobi, zastępuje obiekt w celu uzyskania obiektu o tej samej wartości.

więc ustawienie IsAuthenticated do true jest rzeczywiście różni się zalogujesz. Jak mówi Jeff, logując się do uwierzytelniania formularzy dzieje, gdy bilet uwierzytelnienia są generowane i wysyłane do klienta w postaci ciastka. (RedirectFromLoginPage lub SetAuthCookie) To, o czym rozmawiamy z IsAuthenticated jest uwierzytelnianie, które dzieje się z każdym żądaniem strony. Logowanie odbywa się, gdy użytkownik wprowadzi swoje poświadczenia i otrzyma bilet o wartości , uwierzytelnianie odbywa się przy każdym żądaniu.

+0

tutaj jest link do buforowanej odpowiedzi Google: https://webcache.googleusercontent.com/search?q=cache:t4JNfp8peQIJ:https://forums.asp.net/t/1416811.aspx%3FQuestion%2Babout%2Bmethods% 2Bto% 2Bdetect% 2Bif% 2Ba% 2Buser% 2Bis% 2Blogged% 2Bin – tylerlindell

8

Istnieje dość szczegółowy post autorstwa Daniela Kenta here. (Fragment)

Request.IsAuthenticated jest nie tylko dla formy authentciation - to jest ważny bez względu na to, jaki rodzaj uwierzytelniania jest używany (okien, paszport, formularze lub nasz własny zwyczaj schemacie)

HttpRequest.IsAuthenticated będzie prawdziwe, gdy użytkownik wysyłający żądanie został uwierzytelniony. Zasadniczo, ta właściwość zapewnia tę samą informację jako Context.User.Identity.IsAuthenticated.

+4

Link jest niestety uszkodzony. Znalazłem wersję z pamięci podręcznej za pośrednictwem Google i opublikowałem jej treść w innej odpowiedzi, aby poprawić formatowanie. – Oliver