2012-09-06 17 views
13

He creado una aplicación MVC simple que utiliza el proveedor de membresía .Net que se suministra con el nuevo proyecto.Razor View IsAuthenticated no funciona como se esperaba

Estoy intentando que las pestañas se muestren correctamente. Yo no podría entender este derecho, pero aquí está mi código:

<!DOCTYPE html> 
<html> 
<head> 
    <title>@ViewBag.Title</title> 
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 
</head> 
<body> 
    <div class="page"> 
     <div id="header"> 
      <div id="title"> 
       <h1>Suburban Customer Portal</h1> 
      </div> 
      <div id="logindisplay"> 
       @Html.Partial("_LogOnPartial") 
      </div> 
      <div id="menucontainer"> 
       <ul id="menu"> 

       @if (Request.IsAuthenticated) 
       { 
        <li>@Html.ActionLink("ChangePassword", "ChangePassword", "Account")</li> 
       }else { 
        <li>@Html.ActionLink("Logon", "Logon", "Account")</li> 
        <li>@Html.ActionLink("Register", "Register", "Account")</li> 
       } 

        <li>@Html.ActionLink("ContactUs", "ContactUs", "Home")</li> 
       </ul> 
      </div> 
     </div> 
     <div id="main"> 
      @RenderBody() 
     </div> 
     <div id="footer"> 
     </div> 
    </div> 
</body> 
</html> 

En esta línea:

@if (Request.IsAuthenticated) 

que estoy tratando de mostrar las pestañas derecha pendiente sobre si ya se autentican. Esto siempre sale como verdadero ...

¿Cómo debo estar haciendo esto? Aparentemente no lo estoy haciendo bien ...

¡Gracias de nuevo!

Respuesta

19

creo que se debe utilizar

@if(User.Identity.IsAuthenticated)

+1

perfecto !!! ¡exactamente lo que necesitaba! tyvm !! – ErocM

+2

Interesante ... 'Request.IsAuthenticated' debe ser siempre igual a' User.Identity.IsAuthenticated'. Vea aquí: http://forums.asp.net/t/1416811.aspx –

+0

@LenielMacaferi - es una pregunta si confía en aghausman12 más que yo ;-) –

2

Bueno, su pregunta no es muy clara, pero Request.IsAuthenticated en esta línea:

@if(Request.IsAuthenticated) 

comprueba si la solicitud tiene datos sobre un usuario autenticado . Si es verdadero, se mostrará el enlace.

En su caso específico el enlace Change Password sólo se mostrará si el usuario ha iniciado sesión.

Parece correcto.

Para que las pestañas se oculten, es decir, Request.IsAuthenticated = false primero debe para que las cookies que almacenan la información de inicio de sesión se eliminen del navegador del usuario.

Cuestiones relacionadas