1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Web; 5using System.Web.Mvc; 6using System.Web.Mvc.Ajax; 8namespace MVCDemo.Controllers.Filters 9{ ??public class LoggerFilter : FilterAttribute, IActionFilter ??{ ??????void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) ??????{ ??????????filterContext.Controller.ViewData["ExecutingLogger"] = "正要添加公告,已以写入日志!时间:" + DateTime.Now; ???????}17 ???????void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext) ??????{ ??????????filterContext.Controller.ViewData["ExecutedLogger"] = "公告添加完成,已以写入日志!时间:" + DateTime.Now; ??????} ??}22}
复制代码 1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Web; 5using System.Web.Mvc; 6using System.Web.Mvc.Ajax; 7 8namespace MVCDemo.Controllers.Filters 9{10 ???public class ExceptionFilter : FilterAttribute,IExceptionFilter11 ???{12 ???????void IExceptionFilter.OnException(ExceptionContext filterContext)13 ???????{14 ???????????filterContext.Controller.ViewData["ErrorMessage"] = filterContext.Exception.Message;15 ???????????filterContext.Result = new ViewResult()16 ???????????{17 ???????????????ViewName = "Error",18 ???????????????ViewData = filterContext.Controller.ViewData,19 ???????????};20 ???????????filterContext.ExceptionHandled = true;21 ???????}22 ???}23}
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Web; 5using System.Web.Mvc; 6using System.Web.Mvc.Ajax; 7using MVCDemo.Models; 8using MVCDemo.Models.Interfaces; 9using MVCDemo.Models.Entities;10using MVCDemo.Controllers.Filters;12namespace MVCDemo.Controllers13{ ??public class AnnounceController : Controller ??{ ??????public ActionResult Release() ??????{ ??????????ICategoryService cServ = ServiceBuilder.BuildCategoryService(); ??????????List<CategoryInfo> categories = cServ.GetAll(); ??????????ViewData["Categories"] = new SelectList(categories, "ID", "Name"); ??????????return View("Release"); ??????}24 ???????[LoggerFilter()] ??????[ExceptionFilter()] ??????public ActionResult DoRelease() ??????{ ??????????AnnounceInfo announce = new AnnounceInfo() ??????????{ ??????????????ID = 1, ??????????????Title = Request.Form["Title"], ??????????????Category = Int32.Parse(Request.Form["Category"]), ??????????????Content = Request.Form["Content"], ??????????};36 ???????????IAnnounceService aServ = ServiceBuilder.BuildAnnounceService(); ??????????aServ.Release(announce);39 ???????????ViewData["Announce"] = announce;41 ???????????System.Threading.Thread.Sleep(2000); ??????????ViewData["Time"] = DateTime.Now; ??????????System.Threading.Thread.Sleep(2000);45 ???????????return View("ReleaseSucceed"); ??????} ??}48}
-----------------------------------------------
using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Web;using System.Web.Mvc;namespace WebApplication1.App_Start{ ???public class ControllerValidateAttribute : ActionFilterAttribute ???{ ???????public override void OnActionExecuting(ActionExecutingContext actionContext) ???????{ ???????????var conLoginName = ConfigurationManager.AppSettings["LoginName"].ToString(); ???????????try ???????????{ ???????????????string loginName = actionContext.HttpContext.Request.Url.AbsolutePath.ToLower().TrimEnd(‘/‘).ToString(); ???????????????if (loginName != conLoginName) ???????????????{ ???????????????????var conKey = ConfigurationManager.AppSettings["InfoAPIKey"].ToString(); ???????????????????var token = actionContext.HttpContext.Request.Headers.Get("token").First().ToString(); ???????????????????if (token == conKey) ???????????????????{ ???????????????????????//actionContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { Controller = "", action = "" })); ???????????????????} ???????????????????else ???????????????????{ ???????????????????????actionContext.Result = new ContentResult { Content = @"The illegal user access" }; ???????????????????} ???????????????} ???????????} ???????????catch (Exception ex) ???????????{ ???????????????actionContext.HttpContext.Response.Write(ex); ???????????} ???????} ???}}
using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Web;using System.Web.Http.Controllers;using System.Web.Http.Filters;namespace WebApplication1.App_Start{ ???public class ApiControllerValidateAttribute : ActionFilterAttribute ???{ ???????public override void OnActionExecuting(HttpActionContext actionContext) ???????{ ???????????var conLoginName = ConfigurationManager.AppSettings["LoginName"].ToString(); ???????????try ???????????{ ???????????????string loginName = actionContext.Request.RequestUri.AbsolutePath.ToLower().TrimEnd(‘/‘).ToString(); ???????????????if (loginName != conLoginName) ???????????????{ ???????????????????var conKey = ConfigurationManager.AppSettings["InfoAPIKey"].ToString(); ???????????????????var token = actionContext.Request.Headers.GetValues("token").First().ToString(); ???????????????????if (token == conKey) ???????????????????{ ???????????????????????//成功 ???????????????????} ???????????????????else ????????????????????{ ???????????????????????//失败 ???????????????????????actionContext.Response = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Forbidden); ???????????????????} ???????????????} ???????????} ???????????catch (Exception ex) ???????????{ ???????????} ???????????base.OnActionExecuting(actionContext); ???????} ???}}
需要调用的 Controller类上加上验证类名
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.App_Start;
namespace WebApplication1.Controllers
{
[ControllerValidate]
public class Test1Controller : Controller
{
//
// GET: /Test1/
public ActionResult Index()
{
return View();
}
}
}
using WebApplication1.App_Start;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace MvcApplication1.Controllers
{
[ApiControllerValidate]
public class TestController : ApiController
{
[HttpGet]
public dynamic Index()
{
return Request.CreateResponse(HttpStatusCode.OK, new
{
Success = true,
Message = ""
});
}
}
}
MVC拦截
原文地址:http://www.cnblogs.com/xiangxiong/p/7755282.html