我有一個安全應用程序,每個操作都有一個Authorize
屬性。基於控制器/操作的MVC UI修剪授權屬性
[Authorize(Roles = "Role1,Role2")]
public ActionResult MyAction(int id)
{
return View();
}
在我的用戶界面中,我有這些控制器/操作的鏈接。我想創建一個鏈接一個自定義的HtmlHelper接受控制器和動作名稱:
@Html.SecuredLink("Click Me", "MyAction", "MyController");
,這將決定耐候來表現自己或不基於用戶是否有權限給定的行動:
public static MvcHtmlString SecuredLink(this HtmlHelper helper, string text, string action, string controller)
{
var userId = Membership.GetUserId();
var userHasRightsToThisAction = IsActionAccessibleToUser(helper.ViewContext.RequestContext.HttpContext, controller, action); // <- How would this work?
if (userHasRightsToThisAction)
{
// Render Link
// ...
}
}
我一直無法找到一種方法來輕鬆測試授權狀態代碼中的操作。
你能澄清爲什麼不能正常渲染鏈接,然後在自定義的AuthorizeAttribute中重定向?不過,我認爲你應該首先查看User.Identity對象,然後確定授權名稱,然後決定是否渲染。 – BigMike
我不希望用戶能夠點擊該鏈接,如果他們沒有對其導致的頁面的權利。 – CodeGrue