您的位置:首页 > 其它

MVC中ActionFilterAttribute用法并实现统一授权

2016-03-09 09:48 232 查看
http://blog.sina.com.cn/s/blog_78106bb10102v9b5.html

MVC中ActionFilterAttribute经常用来处理权限或者统一操作时的问题。

先写一个简单的例子,如下:

比如现在有一个用户管理中心,而这个用户管理中心需要登录授权后才能进去操作或浏览信息,这个时候我们不可能每一个页面都写一遍权限的判断,这个时候就需要我们进行统一判断权限,那么怎么统一权限呢?如果你了解MVC那么下面的代码应该很容易看懂,否则还是先看一下MVC基础吧。

1.创建一个类(用来检查用户是否登录和用户权限)代码如下:

// 过滤器

public class MemberCheckAttribute : ActionFilterAttribute

{

//执行Action之前操作

public override void OnActionExecuting(ActionExecutingContext filterContext)

{

//判断是否登录或是否用权限,如果有那么就进行相应的操作,否则跳转到登录页或者授权页面

if (true)

{

//处理Action之前操作内容根据我们提供的规则来定义这部分内容

base.OnActionExecuting(filterContext);

}

else

{

//跳转到登录页面

filterContext.HttpContext.Response.Redirect("/login.html");

}

}

2.页面程序,也就是控制器里的程序,如下

//MemberCheck是扩展特性,自定义特性名称是根据上面的类MemberCheckAttribute名进行变化

//当访问/user/index时,程序会先走自定义特性MemberCheck然后再走Index

[MemberCheck]

public class UserController : Controller

{

public ActionResult Index()

{

return View();

}

}

解释:ActionFilterAttribute有一下经常用到的方法

OnActionExecuted 在执行操作方法后由 MVC 框架调用。

OnActionExecuting 在执行操作方法之前由 MVC 框架调用。

OnResultExecuted 在执行操作结果后由 MVC 框架调用。

OnResultExecuting 在执行操作结果之前由 MVC 框架调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: