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 = ""
});
}
}
}
MVC拦截的更多相关文章
- spring MVC拦截器01
spring MVC拦截 作用:身份校验,权限检查,防止非法訪问. 场景:一个bbs系统,用户没有登录就无法发帖或者删除评论; 一个博客系统,没有登录就无法发表博文,无法添加分类,无法删除博文. sp ...
- mvc拦截器
在ASP.NET MVC中,有三种拦截器:Action拦截器.Result拦截器和Exception拦截器.这里说的是第一种和第三种.其实所谓的ASP.NET MVC拦截器,也没什么神秘的,就是一个普 ...
- SSM(spring mvc+spring+mybatis)学习路径——2-2、spring MVC拦截器
目录 2-2 Spring MVC拦截器 第一章 概述 第二章 Spring mvc拦截器的实现 2-1 拦截器的工作原理 2-2 拦截器的实现 2-3 拦截器的方法介绍 2-4 多个拦截器应用 2- ...
- spring mvc 拦截器的使用
Spring MVC 拦截器的使用 拦截器简介 Spring MVC 中的拦截器(Interceptor)类似于 Servler 中的过滤器(Filter).用于对处理器进行预处理和后处理.常用于日志 ...
- 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor
[Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...
- Spring Boot 2.X(九):Spring MVC - 拦截器(Interceptor)
拦截器 1.简介 Spring MVC 中的拦截器(Interceptor)类似于 Servlet 开发中的过滤器 Filter,它主要用于拦截用户请求并作相应的处理,它也是 AOP 编程思想的体现, ...
- spring MVC 拦截有几种实现方式
spring MVC 拦截有几种实现方式 实现HandelInterceptor接口方式 继承HandelInterceptor 的方式.一般有这两种方式 spring 如何走单元测式 ...
- Spring MVC拦截器配置
Spring MVC拦截器配置 (1)自定义拦截器 package learnspringboot.xiao.other; import org.springframework.web.servlet ...
- 写的太细了!Spring MVC拦截器的应用,建议收藏再看!
Spring MVC拦截器 拦截器是Spring MVC中强大的控件,它可以在进入处理器之前做一些操作,或者在处理器完成后进行操作,甚至是在渲染视图后进行操作. 拦截器概述 对于任何优秀的MVC框架, ...
- 对于Spring MVC 拦截器的一些了解
Spring MVC 拦截器的执行顺序 应用场景 假设请求 localhost:8080/ 则要求直接重定向到 localhost:8080/login ; 定义拦截器顺序 permission lo ...
随机推荐
- Nginx Rewrite相关功能-rewrite指令
Nginx Rewrite相关功能-rewrite指令 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- 2019牛客国庆day3-G &CF1238E
牛客G: 给定大小为N的数组a[],给定M组关系,让你重排a[],使得sum{M队关系的绝对值之差}最小.首先将a排序,然后依次把a填入数组. 假设i在二进制下有x个1,用dp[i]更新dp[i|(1 ...
- Kafka数据安全性、运行原理、存储
直接贴面试题: 怎么保证数据 kafka 里的数据安全? 答: 生产者数据的不丢失kafka 的 ack 机制: 在 kafka 发送数据的时候,每次发送消息都会有一个确认反馈机制,确保消息正常的能够 ...
- CentOS7 开放端口 通过 firewall-cmd 工具来操作防火墙
CentOS7 提供了 firewall-cmd 工具来操作防火墙. firewall-cmd --permanent:表示设置为持久,配置被写入配置文件,跨重启,不会立即生效,重新加载配置后生效.不 ...
- java注释代码规范
//收集了一小部分,忘记的时候过来查一下 java--hadoop部分 /** * 此类用来处理DNS原始日志:统计给定域名平均响应时延 * @param Input * @param Output ...
- ABP .net framework版 的发布
先正常的发布流程走 特别的如下图
- vue响应数据的原理
vue最大的特点就是数据驱动视图. vue的数据改变,页面一定发生改变?不一定. 当操作引用类型的数据,动态添加属性时,页面不会发生改变. vue响应式数据原理(也叫数据绑定原理.双向数据绑定原理): ...
- selenium--单选下拉列表
下拉选择 from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get(&q ...
- java web开发入门四(spring)基于intellig idea
spring 1.spring简介 Spring框架,可以解决对象创建以及对象之间依赖关系的一种框架. 且可以和其他框架一起使用:Spring与Struts, Spring与hibernate (起 ...
- 《BLACK HAT PYTHON3》
Black Hat Python3 kali 安装新版本python kali中自带的pyhton是2.7版本,显然2019年了,python2.x的版本已经逐渐过时,好多第三方库都逐步宣布不再支持p ...