2011-01-11 28 views
13

Estoy intentando acceder a User.Identity desde mi página maestra para poder averiguar qué usuario ha iniciado sesión, pero no puedo hacer que funcione. Si importo System.Security.Principal en mi página maestra no hace ninguna diferencia:Acceso a User.Identity desde la página maestra

<%@ Import Namespace="System.Security.Principal" %> 

puedo acceder a ella bien si trato dentro de un controlador.

¿Alguna idea de lo que debo hacer?

Respuesta

51

¿Qué pasa a través de HttpContext.Current.User.Identity?

8

<%=HttpContext.Current.User.Identity.Name %> Mostrará el nombre de usuario actual HttpContext.Current.User obtendrá el objeto IPrincipal.

Aquí es una página maestra que sólo muestra el nombre de usuario en el título:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title> 
     <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> 
    </title> 
    <link href="../../Content/Style.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
    <div class="page"> 
     <div id="header"> 
      <div id="title"> 
       <h1 id="maintitle"> 
        <%=HttpContext.Current.User.Identity.Name %> 
       </h1> 
      </div> 
     </div> 
     <div id="main"> 
      <asp:ContentPlaceHolder ID="MainContent" runat="server" /> 
     </div> 
    </div> 
</body> 
</html> 
0

Usted puede obtener esta información de:

Context.User.Identity.Name

2

Puede utilizar HttpContext.Current.User.Name pero Es necesario recordar que el código Master Page se ejecuta solo después del código de la página esclava. De modo que puede usar esta variable siempre que no esté realizando ninguna lógica de seguridad en la página maestra.

3

creo que su trabajo

HttpContext.Current.User.Identity.Name.ToString() 

o

Page.User.Identity.Name.ToString() 
+0

¿Qué este complemento en comparación con la respuesta aceptada? – beresfordt

+0

'Page.User' parece más limpio de alguna manera que' HttpContext.Current.User'. Solo una cuestión de gusto ya que hacen lo mismo. –

+0

No entiendo lo que dices de mí –

Cuestiones relacionadas