asp.net mvc3有四类过滤器:授权, 操作,结果, 异常。操行的顺序为:授权,操作,结果,异常。

首先看一下TempData: 数据只能经过至多一次的Controller传递, 并且每个元素至多只能被访问一次,访问以后,自动删除。一般用于临时的缓存内容或抛出错误页面时传递错误消息,所以异常信息的传递就用TempData了。

在项目中我们只用到授权类的验证用户是否登录功能, 及异常类的错误日志记录功能。可以继承系统默认实现的抽象类AuthorizeAttribute, HandleErrorAttribute

  • 是否登录:
public override void OnAuthorization(AuthorizationContext filterContext)
{
HttpContextBase context = filterContext.HttpContext; if (null == context.Session["User"])
{
filterContext.Result = new RedirectResult("~/Home/ReLogin");
} //base.OnAuthorization(filterContext);
}
  • 异常处理
public override void OnException(ExceptionContext filterContext)
{
Exception ex = filterContext.Exception; //记录日志ex.Message
ILog log = LogManager.GetLogger("Exception");
log.Error(ex.Message);
log.Error(ex.StackTrace);
       TempData["errMsg"] = ex.Message; filterContext.ExceptionHandled = true; filterContext.Result = new RedirectResult("~/Home/ErrorMsg"); //base.OnException(filterContext);
}
  • 最后在相应的action中返回类似{success: false, errType: **, errMsg: TempData["errMsg"] as string},然后在客户端做相应处理, 这个方法比较笨啊, 客户端要做很多重复的工作, 很笨, 不过目前也只能想到这里了, 以后熟悉了再优化吧。
  • 针对是否登录, 因为在刷新时如果会话为空则会弹出登录框, 所以检测到未登录的情况,就刷新一下页面就可以了,如下:
window.location.reload();

[摘自http://msdn.microsoft.com/zh-cn/library/gg416513(v=vs.98).aspx

NSS_03 过滤器的更多相关文章

  1. ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器

    原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...

  2. ASP.NET Web API 过滤器创建、执行过程(二)

    ASP.NET Web API 过滤器创建.执行过程(二) 前言 前面一篇中讲解了过滤器执行之前的创建,通过实现IFilterProvider注册到当前的HttpConfiguration里的服务容器 ...

  3. ASP.NET Web API 过滤器创建、执行过程(一)

    ASP.NET Web API 过滤器创建.执行过程(一) 前言 在上一篇中我们讲到控制器的执行过程系列,这个系列要搁置一段时间了,因为在控制器执行的过程中包含的信息都是要单独的用一个系列来描述的,就 ...

  4. ABP(现代ASP.NET样板开发框架)系列之13、ABP领域层——数据过滤器(Data filters)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之13.ABP领域层——数据过滤器(Data filters) ABP是“ASP.NET Boilerplate P ...

  5. AngularJS过滤器filter-时间日期格式-渲染日期格式-$filter

    今天遇到了这些问题索性就 写篇文章吧 话不多说直接上栗子 不管任何是HTML格式还是JS格式必须要在  controller 里面写 // new Date() 获取当前时间 yyyy-MM-ddd ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】

    系列目录 上次的探讨没有任何结果,我浏览了大量的文章和个别系统的参考!决定用Cache来做,这可能有点难以接受但是配合mvc过滤器来做效果非常好! 由于之前的过滤器我们用过了OnActionExecu ...

  7. Hawk 4.2 过滤器

    过滤器可以在流中,过滤掉不符合条件的文档.当然也可勾选反向,此时只会留下不符合条件的文档. 空对象过滤器 最为常用,需要列名,可以过滤掉所有内容为Null,或字符串全部都是空字符的情况 数值范围过滤 ...

  8. 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器

    MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...

  9. 自定义jinja2 过滤器

    今天,我们要讲的是自定义jinja2 过滤器这个知识点,因为官方文档对此一代而过,讲得不够清楚,所以我们专门拿出来讲一下. 例子 例子写了两个自定义过滤器,一个是转换字典到字符串的过滤器,一个是返回当 ...

随机推荐

  1. php生成CSV格式(转)

    参考网址: php对csv文件的常用操作集合 http://blog.xhbin.com/archives/748 1,下载CSV格式文档 唯一需要特别注意的是编码. <? include_on ...

  2. Error creating bean with name &#39;menuController&#39;: Injection of autowired dependency……

    出现了一大串错误 Error creating bean with name 'userController': Injection of autowired dependencies failed. ...

  3. [原 -> 砖] C# IEnumerable<T>泛型取值

    为什么要写这个?因为发现,很多人在读取泛型集合中Item的值时,使用的方法是 item.GetType().GetField("xxxxx").GetValue() 或类似的写法. ...

  4. C++中创建对象的时候加括号和不加括号的区别

    c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new My ...

  5. log4net的应用

    1.下载log4net 2编写log4net的配置文件 <?xml version="1.0" encoding="utf-8" ?> <co ...

  6. 小白日记35:kali渗透测试之Web渗透-手动漏洞挖掘(一)-默认安装引发的漏洞

    手动漏洞挖掘 即扫描后,如何对发现的漏洞告警进行验证. #默认安装 流传linux操作系统比windows系统安全的说法,是因为windows系统默认安装后,会开放很多服务和无用的端口,而且未经过严格 ...

  7. 自问自答-hadoop在安全模式下究竟干了什么见不得人的事

    本来想自己从网上搜集整理的,但是发现吴超写的刚刚好,不多不少,所以直接转载(图片失效了,用自己的图片) http://www.superwu.cn/2013/08/23/548/ 在hadoop集群的 ...

  8. c# 操作word

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  9. 自定义弧形的 tabBar

    // // TabBarViewController.h // LittleLoveLive // // Created by YJ // // TabBarViewController.m // L ...

  10. Android调用相册截取图片遇到的问题

    1.在Android中可以使用如下的方式来调用相册,选择图片进行裁剪使用,昨天在开发的时候遇到一个问题 private void cropBigImageUri(Uri uri, int output ...