【C#】MVC请求统一验证的方法
MVC出色的地方是优雅的URL格式和代码结构,很实用。
使用过程中遇到一个问题是需要对MVC的请求做统一的token验证,如果验证不过则跳转到制定页面。网上方法不多,不过还是找到了解决办法,即重写控制器的OnActionExecuting方法,在动作执行前进行统一的预处理,实现代码如下:
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext context)
{
// 非错误提示接口则判断是否授权
if (!(context.ActionDescriptor.ControllerDescriptor.ControllerName == "Home"))
{
if (!CheckToken())
{
context.Result = RedirectToRoute("Default", new { Controller = "Home", Action = "Error", errCode = Error.TOKEN_ERR_CODE, errMsg = Error.TOKEN_ERR_MSG });
}
}
base.OnActionExecuting(context);
}
/// <summary>
/// 验证token是否正确
/// </summary>
/// <returns></returns>
private bool CheckToken()
{
if (System.Configuration.ConfigurationManager.AppSettings["check_token"] == "true")
{
string token = System.Configuration.ConfigurationManager.AppSettings["app_token"];
return (Request["token"] != null && Request["token"].ToString() == token);
}
else
{
return true;
}
}
}
再修改其他所有的控制器继承自BaseController就OK了。上面的代码实现了出Home控制器外的请求在token验证失败时跳转到错误提示页面。
还没有人抢沙发呢~