MVC拦截

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,IExceptionFilter
11    {
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.Controllers
13{
   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 = ""
            });
        }
    }
}

 

posted @ 2017-10-30 16:55  hi.....  阅读(157)  评论(0编辑  收藏  举报