Authorize屬性可以根據Action進行一些訪問控制,但假設我在佈局中有一些UI元素,除非用戶授權,否則應注意輸出。如何在視圖佈局中處理授權
我可能可以在ViewBag中設置一些布爾值,但這不是我想的好解決方案。
某處在Layout.cshtml:
@if (ViewBag.IsAuthorized)
{
<li>@Html.ActionLink("Index", "Admin")</li>
}
讓我知道是否有更好的解決方案。 謝謝。
Authorize屬性可以根據Action進行一些訪問控制,但假設我在佈局中有一些UI元素,除非用戶授權,否則應注意輸出。如何在視圖佈局中處理授權
我可能可以在ViewBag中設置一些布爾值,但這不是我想的好解決方案。
某處在Layout.cshtml:
@if (ViewBag.IsAuthorized)
{
<li>@Html.ActionLink("Index", "Admin")</li>
}
讓我知道是否有更好的解決方案。 謝謝。
使用WebPageRenderingBase.User
對象;假設你之前已經將用戶設置爲HttpContext或者Controller(你真的應該是這樣)。由於您使用的是Authorize
屬性,因此我認爲必須有User
--所以希望以下內容能夠正常工作。
這User
可在剃刀訪問很容易:
@User.Identity.Name
將輸出的當前用戶的名稱。因此,一個if
塊運行,只有當用戶被認證爲:
@if(User.Identity.IsAuthenticated)
{
Hello
}
輸出"Hello"
如果用戶進行身份驗證。
感謝下面的James提醒我,您可以檢查IsAuthenticated
關閉User
對象 - 我最初找不到它 - 但後來記住它在Identity
!
你可以製作一個並從佈局中調用它。
你可以調用,如果用戶進行身份驗證,用於驗證功能:
助手:
public bool checkUser(string user)
{
//User is allowed?
return true/false;
}
佈局:
@if (checkUser(User.Identity.Name)
{
<li>@Html.ActionLink("Index", "Admin")</li>
}
你錯過了哪些細節? – mathk
@AndrasZoltan刪除了我的評論,因爲我看到你更新。 – James