2012-09-06 58 views
13

Tôi đã tạo một ứng dụng MVC đơn giản đang sử dụng .Net Membership Provider được cung cấp cùng với dự án mới.Razor View IsAuthenticated không hoạt động như mong đợi

Tôi đang cố gắng hiển thị các tab để hiển thị chính xác. Tôi có thể không hiểu quyền này nhưng đây là mã của tôi:

<!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> 

Tại dòng này:

@if (Request.IsAuthenticated) 

Tôi cố gắng để hiển thị các tab ngay cấp phát trên nếu họ đã được chứng thực. Điều này luôn xuất hiện đúng ...

Tôi nên làm như thế nào? Tôi dường như không làm đúng cách ...

Cảm ơn bạn lần nữa!

Trả lời

19

Tôi nghĩ rằng bạn nên sử dụng

@if(User.Identity.IsAuthenticated)

+1

hoàn hảo !!! chính xác những gì tôi cần !! tyvm !! – ErocM

+2

Thú vị ... 'Request.IsAuthenticated' phải luôn bằng' User.Identity.IsAuthenticated'. Xem tại đây: http://forums.asp.net/t/1416811.aspx –

+0

@LenielMacaferi - đó là một câu hỏi nếu bạn tin tưởng aghausman12 nhiều hơn sau đó tôi ;-) –

2

Vâng, câu hỏi của bạn không phải là rất rõ ràng, nhưng Request.IsAuthenticated trong dòng này:

@if(Request.IsAuthenticated) 

kiểm tra nếu yêu cầu có dữ liệu về một người dùng xác thực . Nếu đúng, liên kết của bạn sẽ được hiển thị.

Trong trường hợp cụ thể của bạn liên kết Change Password sẽ chỉ được hiển thị nếu người dùng đang đăng nhập.

Có vẻ đúng.

Để ẩn các tab, nghĩa là, đối với Request.IsAuthenticated = false, trước hết bạn phải logout để cookie lưu trữ thông tin đăng nhập sẽ bị xóa khỏi trình duyệt của người dùng.

Các vấn đề liên quan