2012-07-03 19 views
2

Authorize屬性可以根據Action進行一些訪問控制,但假設我在佈局中有一些UI元素,除非用戶授權,否則應注意輸出。如何在視圖佈局中處理授權

我可能可以在ViewBag中設置一些布爾值,但這不是我想的好解決方案。

某處在Layout.cshtml:

@if (ViewBag.IsAuthorized) 
{ 
    <li>@Html.ActionLink("Index", "Admin")</li> 
} 

讓我知道是否有更好的解決方案。 謝謝。

回答

3

使用WebPageRenderingBase.User對象;假設你之前已經將用戶設置爲HttpContext或者Controller(你真的應該是這樣)。由於您使用的是Authorize屬性,因此我認爲必須有User--所以希望以下內容能夠正常工作。

User可在剃刀訪問很容易:

@User.Identity.Name 

將輸出的當前用戶的名稱。因此,一個if塊運行,只有當用戶被認證爲:

@if(User.Identity.IsAuthenticated) 
{ 
    Hello 
} 

輸出"Hello"如果用戶進行身份驗證。

感謝下面的James提醒我,您可以檢查IsAuthenticated關閉User對象 - 我最初找不到它 - 但後來記住它在Identity

+0

你錯過了哪些細節? – mathk

+0

@AndrasZoltan刪除了我的評論,因爲我看到你更新。 – James

0

你可以製作一個並從佈局中調用它。

​​
0

你可以調用,如果用戶進行身份驗證,用於驗證功能:

助手:

public bool checkUser(string user) 
{ 
//User is allowed? 
return true/false; 
} 

佈局:

@if (checkUser(User.Identity.Name) 
{ 
    <li>@Html.ActionLink("Index", "Admin")</li> 
}