2012-01-23 18 views
6

En mi aplicación MVC quiero renderizar una tabla en un archivo cshtml, si el usuario actual de inicio de sesión es alguna persona x. Estoy usando la autenticación de Windows y realicé los siguientes cambios en el archivo web.config.Autenticación de Windows - Obteniendo el nombre de usuario actual

<authentication mode="Windows"> 
     </authentication> 

Y en mi controlador cuando estoy tratando de acceder al nombre del usuario actual no estoy recibiendo ningún nombre de usuario. Estoy intentando lo siguiente:

ViewBag.LogInUserName = Request.RequestContext.HttpContext.User.Identity.Name; 

Esta línea anterior estaba funcionando antes. Pero no sé qué está mal ahora. También he alojado mi aplicación en IIS ahora.

Respuesta

11

Debe poner el atributo [Authorize] en su controlador.

Puede usar User.Identity.Name en sus controladores.

[Authorize] 
public class YourController : Controller 
{ 

    public ActionResult SomeAction() 
    { 
     var userName = User.Identity.Name; 
    } 
} 
+0

Gracias por la ayuda. ¿Puedes mostrar cómo puedo lograr eso? – Jash

+0

@Jash: lee mi actualización. – jgauffin

+0

Acabo de cambiar las propiedades de mi proyecto web para usar el servidor de desarrollo Asp.Net. Y ahora puedo recuperar el nombre de usuario de inicio de sesión actual. Entonces, el problema es cuando estoy alojando mi proyecto web en IIS. ¿Alguna idea? – Jash

1

Un poco tarde, pero esto puede servir a otros en el futuro.

Tuve el mismo problema una vez después de implementar mi sitio en un nuevo servidor IIS, y la autenticación anónima se habilitó, así que asegúrese de que la autenticación anónima esté deshabilitada y debería funcionar.

11

Echa un vistazo a las propiedades del proyecto web, en particular:

  1. autenticación anónima - Establecer en "Disabled"
  2. autenticación de Windows - el valor "Activar"

Por defecto estos están configurados de manera opuesta a lo que probablemente estés buscando.

Web project properties

(Imagen procedente de MSDN)

Cuestiones relacionadas