2010-02-04 7 views
40

Descripción de la muestra del código MSDN: El siguiente ejemplo de código usa la propiedad IsAuthenticated para determinar si la solicitud actual se ha autenticado. Si no se ha autenticado, la solicitud se redirige a otra página donde los usuarios pueden ingresar sus credenciales en la aplicación web. Esta es una técnica común utilizada en la página predeterminada para una aplicación.¿Cómo funciona Request.IsAuthenticated?

Esto es muy bueno, pero ningún detalle ni nada ...

¿qué es exactamente comprobando? ¿Cómo lo configuro en verdadero?

Haga un esfuerzo adicional: ¿Dónde encontraría documentación más detallada sobre esto?

Respuesta

52

Gracias a Google, encontré una versión en caché de la publicación @keyboardP se refiere a his answer. Estoy publicando esa respuesta/publicación aquí como referencia para otros ya que el enlace original está roto (2012-12-06).

Original question que la respuesta a continuación se refiere a:

Tengo una aplicación basada en formas que está dando ajusta a mí. Me di cuenta de que, en una ubicación donde la propiedad IsAuthenticated era verdadera, ahora era falsa y no funcionaba como se esperaba. Me pregunto si tengo una configuración de que no es válida.

Puede alguien decirme lo que establece la propiedad IsAuthenticated a True - lo CONSTITUYE ingresar

respuesta por Daniel Kent:.

Request.IsAuthenticated no es sólo para las formas authentciation - es válida no importa qué tipo de autenticación se esté utilizando (Windows, Pasaporte, formularios o nuestro propio esquema personalizado)

HttpRequest.IsAuthenticated será cierto cuando el uso r haciendo la solicitud ha sido autenticada. Esencialmente, esta propiedad proporciona la misma información como Context.User.Identity.IsAuthenticated.

Al comienzo de una solicitud, Context.User.Idenity contiene GenericIdentity con un nombre de usuario nulo.La propiedad IsAuthenticated para este objeto será return false así que Request.IsAuthenticated será false. Cuando un módulo de autenticación controla el evento Application_AuthenticateRequest y exitosamente autentica al usuario al que sustituye el GenericIdentity en Context.User.Identity con un nuevo IIdentity objeto que devolverá true de su propiedad IsAuthenticated. Request.IsAuthenticated devolverá true.

En el caso de la autenticación de formularios, el módulo de autenticación de formularios usa el ticket de autenticación cifrado contenido en la cookie de autenticación para autenticar al usuario. Una vez que ha hecho esto, reemplaza el GenericIdentity en Context.User.Identity con un objeto FormsIdentity que devuelve True desde su propiedad IsAuthenticated.

Por lo tanto, el establecimiento de IsAuthenticated a true es en realidad diferente a la tala. Como dice Jeff, iniciar sesión en la autenticación de formularios que ocurre cuando se genera el billete la autenticación y la envía al cliente como una cookie. (RedirectFromLoginPage o SetAuthCookie) Lo que estamos hablando con IsAuthenticated es la autenticación que ocurre con cada solicitud de página. El inicio de sesión ocurre cuando un usuario ingresa sus credenciales y se emite un ticket , la autenticación ocurre con cada solicitud.

+0

aquí hay un enlace a la respuesta en caché de 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

Hay una publicación bastante detallada de Daniel Kent here. (Fragmento)

Request.IsAuthenticated es no sólo para las formas authentciation - que es válido no importa qué tipo de autenticación está siendo utilizado (Windows, pasaporte, formularios o nuestra propia combinación personalizada )

HttpRequest.IsAuthenticated será true cuando el usuario que hace la solicitud ha sido autenticado. Básicamente, esta propiedad proporciona la misma información como Context.User.Identity.IsAuthenticated.

+4

Desafortunadamente, el enlace está roto. Encontré una versión en caché a través de Google y publiqué su contenido en una respuesta diferente para un mejor formato. – Oliver