想做一個統一的驗證機制,當調用方法的時候進行身份驗證,再去執行對應的方法。
那麼就想到使用過濾器,C#有面向切面的屬性,直接在方法上使用一個屬性即可。
1、使用過濾器。
public class ValidateFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
}
}
2、在進入方法前進行驗證。
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
IDictionary<string, object> parameters = filterContext.ActionParameters;
bool result = ValidateSign(parameters);
if (!result)
{
JsonResult jresult = new JsonResult
{
Data = new { Result = false, Message = "安全驗證失敗!" }
};
jresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
filterContext.Result = jresult;
}
else
base.OnActionExecuting(filterContext);
}
3、當失敗後,進行自定義的跳轉,正常則繼續。
JsonResult jresult = new JsonResult
{
Data = new { Result = false, Message = "安全驗證失敗!" }
};
jresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
filterContext.Result = jresult;
失敗後返回指定的json信息。