web-dev-qa-db-fra.com

Comment fonctionne Request.IsAuthenticated?

Exemple de code MSDN Description: l'exemple de code suivant utilise la propriété IsAuthenticated pour déterminer si la demande en cours a été authentifiée. S'il n'a pas été authentifié, la demande est redirigée vers une autre page où les utilisateurs peuvent entrer leurs informations d'identification dans l'application Web. Il s'agit d'une technique courante utilisée dans la page par défaut d'une application.

C'est super mais pas de détail ou quoi que ce soit ...

Que vérifie-t-il exactement? Comment puis-je le définir sur vrai?

Allez plus loin: où trouver une documentation plus détaillée à ce sujet?

49
MetaGuru

Grâce à Google, j'ai trouvé une version en cache du post auquel @keyboardP fait référence dans sa réponse . Je poste cette réponse/publication ici comme référence pour les autres, car le lien d'origine est rompu (2012-12-06).

Question d'origine auquel la réponse ci-dessous fait référence:

J'ai une application basée sur des formulaires qui me donne des ajustements. J'ai remarqué que, dans un emplacement où la propriété IsAuthenticated avait été True, elle était désormais fausse et ne fonctionnait pas comme prévu. Je me demande si j'ai un paramètre invalide ??

Quelqu'un peut-il me dire ce qui définit la propriété IsAuthenticated sur True - ce qui constitue la connexion.

Réponse de Daniel Kent:

Request.IsAuthenticated n'est pas seulement pour l'authentification des formulaires - il est valide quel que soit le type d'authentification utilisé (Windows, Passport, Forms ou notre propre schéma personnalisé)

HttpRequest.IsAuthenticated sera vrai lorsque l'utilisateur effectuant la demande aura été authentifié. Essentiellement, cette propriété fournit les mêmes informations que Context.User.Identity.IsAuthenticated.

Au début d'une demande, Context.User.Idenity contient un GenericIdentity avec un nom d'utilisateur nul. La propriété IsAuthenticated de cet objet renverra false so Request.IsAuthenticated sera false. Lorsqu'un module d'authentification gère le Application_AuthenticateRequest événement et authentifie avec succès l'utilisateur qu'il remplace GenericIdentity dans Context.User.Identity avec un nouvel objet IIdentity qui renverra true de sa propriété IsAuthenticated. Request.IsAuthenticated renverra alors true.

Dans le cas de l'authentification par formulaire, le module d'authentification par formulaire utilise le ticket d'authentification chiffré contenu dans le cookie d'authentification pour authentifier l'utilisateur. Une fois cela fait, il remplace le GenericIdentity dans Context.User.Identity avec un objet FormsIdentity qui renvoie True à partir de sa propriété IsAuthenticated.

Ainsi, définir IsAuthenticated sur true est en fait différent de la connexion. Comme le dit Jeff, la connexion à l'authentification par formulaire se produit lorsque le ticket d'authentification est généré et envoyé au client sous forme de cookie. (RedirectFromLoginPage ou SetAuthCookie) Ce dont nous parlons avec IsAuthenticated, c'est l'authentification qui se produit à chaque demande de page. La connexion se produit lorsqu'un utilisateur entre ses informations d'identification et reçoit un ticket, l'authentification se produit à chaque demande.

59
Oliver

Il y a un article assez détaillé de Daniel Kent ici . (Fragment)

Request.IsAuthenticated n'est pas seulement pour l'authentification des formulaires - il est valide quel que soit le type d'authentification utilisé (Windows, Passport, Forms ou notre propre schéma personnalisé)

HttpRequest.IsAuthenticated sera vrai lorsque l'utilisateur effectuant la demande aura été authentifié. Essentiellement, cette propriété fournit les mêmes informations que Context.User.Identity.IsAuthenticated.

8
keyboardP