c# - current - context user identity isauthenticated
Es(HttpContext.Current.User!=Null) suficiente para suponer que FormsAuthentication ha autenticado al usuario (4)
Buena pregunta: además de las respuestas que otros han dado, sugiero que echen un vistazo a este artículo en el sitio 4GuysFromRolla .
En una aplicación ASP.NET (2.0) utilizo FormsAuthentication.
En el método Global.asax / Application_AuthenticateRequest, compruebo si HttpContext.Current.User es nulo.
¿Es esto suficiente saber si existe la cookie de autenticación de formularios, el ticket no ha expirado y, en general, que el mecanismo de autenticación de formularios ha hecho su trabajo para validar al usuario?
Necesito esto, porque tengo ciertas páginas en esa aplicación, que a veces no necesitan autenticación para acceder (en función de algunos criterios), y las incluyo en una directiva de "ubicación" separada en web.config con el fin de excluirlas de la autenticación de las formas "catch all".
Es decir, estoy intentando verificar en Application_AuthenticateRequest si la página a la que se accede en esta "ubicación" necesita protección o no, y si es así, para saber si el usuario ya se ha autenticado o si debo redireccionar al inicio de sesión.
EDITAR: como sugieren las respuestas, lo más probable es que vaya con IsAuthenticated. Para que pueda entenderlo mejor, aquí hay 2 preguntas adicionales :) (por favor, edite otras respuestas para agregarlas, gracias):
¿Puedo suponer que si IsAuthenticated es verdadero, entonces HttpContext.Current.User contendrá seguramente el nombre de usuario para el usuario autenticado?
¿Cómo puedo terminar con un "usuario anónimo" en HttpContext.Current.User, si se impone FormsAuthentication, y solo unas pocas páginas están excluidas con la directiva "location"?
Como un aparte, asegúrese de verificar que el contexto no sea nulo también (en caso de que trabaje en un httpmodule).
Usualmente uso Request.IsAuthenticated. No podría decirle si su enfoque debería funcionar o no. Suena como debería, aunque podría tener efectos secundarios si admite inicios de sesión anónimos.
No, el User
solo podría ser una referencia al usuario anónimo. Compruebe HttpContext.Current.Request.IsAuthenticated
.