我試着創建一個簡單的過濾器,看看用戶是否在一個名爲「系統管理員」的角色,基本上不得不做[Authorize(Roles = "System Administrator")]
的短手。我認爲這將是相當簡單的,但我也是相當新的MVC,所以也許我忽略了一些東西。ASP.Net Identity 2 - 爲什麼我的過濾器不工作?
這裏是我的代碼:
using System.Web.Mvc;
namespace site_redesign_web.Filters
{
public class SystemAdminFilter : ActionFilterAttribute
{
string SysAdminRole = "System Administrator";
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.RequestContext.HttpContext.User != null)
{
var userSysAdmin = filterContext.RequestContext.HttpContext.User.IsInRole(SysAdminRole) == true;
filterContext.ActionParameters["IsSysAdmin"] = userSysAdmin;
}
}
}
}
有一個人建議我要去哪裏錯了?如果此人不是系統管理員,則會帶來巨大的好處,它會將他們引導至Home/NoPermissions
。
謝謝!
可以露出整個類的過濾器? – Aravind
更新後顯示全班。謝謝! – ajtatum
這個帖子可能對你更好地理解https://code.msdn.microsoft.com/ASPNET-MVC-5-Security-And-44cbdb97 – bijayk