我寫了一個從System.Web.Mvc.AuthorizeAttribute派生的自定義授權屬性。我從我的控制器成功使用它來限制對某些功能的訪問。如何避免授權碼邏輯的重複
public class ArticleController : Controller
{
[CustomAuthorize(Role.Administrator)]
public ActionResult Delete(int id)
{
// ...
}
}
而且工作正常。現在我想根據相同的授權邏輯顯示或隱藏HTML元素。例如,在我看來的「文章」中,如果用戶不是管理員,我想隱藏操作按鈕「刪除」。我已經寫了這樣的事情:
<ul id="menu">
<li>@if (User.IsInRole(Role.Administrator)) {
@Html.ActionLink("Delete", "Delete", "Article", new { id = article.ID }, null)
} </li>
</ul>
它的工作原理也很有效,但它創造的代碼邏輯複製,因爲我需要指定兩次必要credientials要執行的操作:
- 在控制器阻止或允許該行爲。
- 用於顯示或隱藏操作鏈接。
什麼是避免這種重複的最好方法?有沒有辦法從視圖中重用我的自定義授權屬性?