在Model文件夹下添加一个类MyActionFilterAttribute继承于ActionFilterAttribute:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace MvcValidateDemo.Models
{
//AllowMultiple = true:允许多个标签同时都起作用
[AttributeUsage(AttributeTargets.All,AllowMultiple = true)]
public class MyActionFilterAttribute : ActionFilterAttribute
{
public string Name { get; set; }
//Action执行之前先执行此方法
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
//HttpContext.Current.Response.Write("<br />执行OnActionExecuting方法:" + Name);
//例子:获取session值,找不到则跳转页面
string session = HttpContext.Current.Session["user"] == null ? string.Empty : HttpContext.Current.Session["user"].ToString();
if (string.IsNullOrEmpty(session))
{
HttpContext.Current.Response.Redirect("/Home/About");
return;
}
} //Action执行之后
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
HttpContext.Current.Response.Write("<br />执行OnActionExecuted方法:" + Name);
} //ActionResult执行之前先执行此方法,返回结果前执行方法
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
HttpContext.Current.Response.Write("<br />执行OnResultExecuting方法:" + Name);
} //返回结果后执行方法
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
HttpContext.Current.Response.Write("<br />执行OnResultExecuted方法:" + Name);
}
}
}

添加一个控制器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcValidateDemo.Models; namespace MvcValidateDemo.Controllers
{
//[MyActionFilter(Name = "HomeController")] //过滤控制器
public class HomeController : Controller
{
//[MyActionFilter(Name = "Index Action")] //过滤Action
[MyActionFilter]
public ActionResult Index()
{
//Response.Write("<p>Action执行了</p>");
//return Content("<br />ok:视图被渲染<br />");
return View();
} public ActionResult Login()
{
Session["user"] = "user";
return Content("登录成功");
} public ActionResult About()
{
return View();
} }
}

当执行Home下Index尝试登录时,会先去执行过滤器的OnActionExecuting方法,过滤器会先判断是否有Session值,如果没找到则跳转页面到/Home/About,当先登录执行/Home/Login时,会将Session值放到服务器中,再次执行/Home/Index则不会跳转

MVC4方法行为过滤器例子(用户登录)的更多相关文章

  1. MVC过滤器实现用户登录验证

    前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...

  2. MVC4验证用户登录特性实现方法

    在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(Attribu ...

  3. 【转】MVC4验证用户登录特性实现方法

    在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(Attribu ...

  4. MVC4项目中验证用户登录一个特性就搞定

    在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(Attribu ...

  5. [转]MVC4项目中验证用户登录一个特性就搞定

    本文转自:http://www.mrhuo.com/Article/Details/470/A-Attribute-For-MVC4-Project-Used-To-Validate-User-Log ...

  6. 转:C4项目中验证用户登录一个特性就搞定

    转:C4项目中验证用户登录一个特性就搞定   在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性.     // 摘要:    //     表示一个特性,该特性用于限制调用 ...

  7. python 全栈开发,Day119(Flask初识,Render Redirect HttpResponse,request,模板语言 Jinja2,用户登录例子,内置Session)

    一.Flask初识 首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分 三大主流Web框架对比 ...

  8. MVC下用户登录状态校验的问题以及解决方案--------------Action全局过滤器的使用

    前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(19)-权限管理系统-用户登录

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(19)-权限管理系统-用户登录 我们之前做了验证码,登录界面,却没有登录实际的代码,我们这次先把用户登录先 ...

随机推荐

  1. ubutu之jdk安装

    1.jdk下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.解压jdk- ...

  2. Linux资源站

    1.<鸟哥的linux私房菜>中提供的台湾高速网络中心ftp站:http://ftp.twaren.net/Linux/CentOS/5/

  3. BZOJ2051——A Problem For Fun

    0.题意:给出一个N个结点的树,每条边有一个正整数权值,定义两个结点的距离为连接这两个结点路径上边权的和.对于每个结点i,它到其他N-1个结点都有一个距离,将这些距离从小到大排序,输出第K个距离. 1 ...

  4. js 判断鼠标进去方向

    function fx(id){ var obj= document.getElementById(id); var fun=function(e){ var w=obj.offsetWidth; v ...

  5. 汉诺塔(河内塔)算法 ----C语言递归实现

    汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子, 在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺 ...

  6. 2016年11月2日--Window.document对象

    一.找到元素: docunment.getElementById("id"):                      根据id找,最多找一个: var a =docunment ...

  7. BZOJ 2177: 曼哈顿最小生成树

    Sol 考了好几次曼哈顿最小生成树,然而一直不会打...这次终于打出来了...神tm调试了2h...好蛋疼... 首先曼哈顿最小生成树有个结论就是讲它每45度分出一个象限,对于每个点,只与每个象限中离 ...

  8. 关于linux中文乱码的问题。

    公司让人在一台装有ubuntu14.04的机器上安装net-snmp,可是这台机器的设置很让人不喜.没关系,一个个解决它. 不能连接外网,得弄一个代理. 这个好说,在可以上外网的本机上安装squid工 ...

  9. fastx_toolkit软件使用说明

    高通量测序数据下机后的原始fastq文件,包含4行,其中一行为质量值,另外一行则为对应序列,我们都了解高通量的数据处理首先要进行质量控制,这些过程包括去接头.过滤低质量reads.去除低质量的3'和5 ...

  10. Exception异常

    JAVA异常指的是运行期出现的错误. 观察错误的名字和行号最重要. 运用关键字try将可能出错的语句catch出来并添加友好的话 \ 在这句话中的ae代表一个自己命名的对象. 1.要捕获首先需要知道错 ...