Come funziona Request.IsAuthenticated?

Esempio di codice MSDN Descrizione: il seguente esempio di codice utilizza la proprietà IsAuthenticated per determinare se la richiesta corrente è stata autenticata. Se non è stato autenticato, la richiesta viene reindirizzata a un’altra pagina in cui gli utenti possono inserire le proprie credenziali nell’applicazione Web. Questa è una tecnica comune utilizzata nella pagina predefinita per un’applicazione.

Questo è fantastico ma nessun dettaglio o niente …

Per cosa sta verificando esattamente? Come faccio a impostarlo su vero?

Vai oltre: dove troverei documentazione più dettagliata su questo?

Grazie a Google, ho trovato una versione cache del post @keyboardP a cui fa riferimento nella sua risposta . Sto postando la risposta / posta qui come riferimento per gli altri poiché il link originale è rotto (2012-12-06).

Domanda originale che la risposta di seguito si riferisce a:

Ho un’applicazione basata su moduli che mi sta dando risultati. Ho notato che, in una posizione in cui la proprietà IsAuthenticated era True, ora era falsa e non funzionava come previsto. Mi chiedo se ho un’impostazione che non è valida ??

Qualcuno può dirmi cosa imposta la proprietà IsAuthenticated su True: quali sono le strutture che si collegano.

Risposta di Daniel Kent:

Request.IsAuthenticated non è solo per l’autenticazione delle forms – è valido indipendentemente dal tipo di autenticazione utilizzata (Windows, Passport, Forms o il nostro schema personalizzato)

HttpRequest.IsAuthenticated sarà true quando l’utente che effettua la richiesta è stato autenticato. In sostanza, questa proprietà fornisce le stesse informazioni di Context.User.Identity.IsAuthenticated .

All’inizio di una richiesta, GenericIdentity contiene un GenericIdentity con un nome utente nullo. La proprietà IsAuthenticated per questo object restituirà false quindi Request.IsAuthenticated sarà false . Quando un modulo di autenticazione gestisce l’evento Application_AuthenticateRequest e autentica correttamente l’utente, sostituisce GenericIdentity in GenericIdentity con un nuovo object IIdentity che restituirà true dalla sua proprietà IsAuthenticated . Request.IsAuthenticated restituirà quindi true .

Nel caso dell’autenticazione basata su form, il modulo di autenticazione moduli utilizza il ticket di autenticazione crittografato contenuto nel cookie di autenticazione per autenticare l’utente. Una volta eseguito, sostituisce GenericIdentity in GenericIdentity con un object FormsIdentity che restituisce True dalla sua proprietà IsAuthenticated .

Pertanto, l’impostazione di IsAuthenticated su true è in realtà diversa IsAuthenticated . Come dice Jeff, l’accesso all’autenticazione dei moduli avviene quando il ticket di autenticazione viene generato e inviato al client come cookie. ( RedirectFromLoginPage o SetAuthCookie ) Di cosa stiamo parlando con IsAuthenticated è l’autenticazione che avviene con ogni richiesta di pagina. L’accesso avviene quando un utente immette le proprie credenziali e viene emesso un ticket, l’autenticazione avviene con ciascuna richiesta.

C’è un post abbastanza dettagliato di Daniel Kent qui . (Frammento)

Request.IsAuthenticated non è solo per l’autenticazione delle forms – è valido indipendentemente dal tipo di autenticazione utilizzata (Windows, Passport, Forms o il nostro schema personalizzato)

HttpRequest.IsAuthenticated sarà true quando l’utente che effettua la richiesta è stato autenticato. In sostanza, questa proprietà fornisce le stesse informazioni di Context.User.Identity.IsAuthenticated.