分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

MVC拦截

发布时间:2023-09-06 01:21责任编辑:熊小新关键词: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,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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved