MVC5的AuthorizeAttribute详解
来源:互联网 发布:破获网络贩卖枪支 编辑:程序博客网 时间:2024/06/05 20:54
现今大多数的网站尤其是购物网站都要求你登录后才能继续操作,当你匿名的将商品放入购物车后,不可能匿名购买这时可以转到登录界面让用户进行登录验证。
适用系统自带的过滤器
- MVC5只要将属性[Authorize]置于相关的action之前就行,那么在调用Buy action之前,就会运用Authorize过滤器。
1 [Authorize]2 public ActionResult Buy(int id)3 {4 //其它购买逻辑代码放在这里5 6 }
2. 也可以将属性[Authorize]置于整个Controller之上。这样位于此控制器下的所有action就都运用了此过滤器。
[Authorize] public class UserController : Controller { //一些action }
3. 也可以将Authorize应用到全部的应用程序的范围类,要使AuthorizeAttribute成为全程序的过滤器,只要将其加入全局过滤器集合RegisterGlobalFilters方法,这个方法位于\App_Start\FilterConfig.cs:
public static void RegisterGlobalFilters(GlobalFilterCollection filters) {filters.Add(new System.Web.Mvc.AuthorizeAttribute());filters.Add(new HandleErrorAttribute());}
4. 如果我们允许部分的控制器或者action允许匿名访问怎么办?只需要在相应的控制器或者action上添加属性[AllowAnonymous]
//// GET: /Account/Login[AllowAnonymous]public ActionResult Login(string returnUrl){ViewBag.ReturnUrl = returnUrl;return View();}
注意:
全局控制器的应用只适用于MVC的Controller和Action,对于Web Forms,静态页面,和其它的HTTP handlers 都不适用。
关于使用自己的过滤器:(以下引用kuangkro的博客:http://www.cnblogs.com/xlhblogs/p/3349972.html)
我们不一定要用MVC默认的Authorize授权验证规则,规则可以自己来定,自定义授权过滤器可以继承AuthorizeAttribute这个类,这个类里面有两个方法是要重写的
- bool AuthorizeCore(HttpContextBase httpContext):这里主要是授权验证的逻辑处理,返回true的则是通过授权,返回了false则不是。
- void HandleUnauthorizedRequest(AuthorizationContext filterContext):这个方法是处理授权失败的事情。
这里就定义了一个比较骑呢的授权处理器,当请求的时候刚好是偶数分钟的,就通过可以获得授权,反之则不通过。当授权失败的时候,就会跳转到登陆页面了。
public class MyAuthorizeAttribute:AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) { //return base.AuthorizeCore(httpContext); return DateTime.Now.Minute % 2 == 0 } protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { filterContext.HttpContext.Response.Redirect("/Customer/Login"); //base.HandleUnauthorizedRequest(filterContext); } }
然后用到一个行为方法上,
[MyAuthorize] public ActionResult ShowDetail() { return View(); }
每当偶数分钟的时候就可以访问得到这个ShowDetail的视图,否则就会跳到了登陆页面了。
- MVC5的AuthorizeAttribute详解
- AuthorizeAttribute
- 重写AuthorizeAttribute实现自己的权限验证
- 重写AuthorizeAttribute实现自己的权限验证
- MVC5的CURD自用
- 关于mvc5的学习
- MVC5 cookie的使用
- MVC 基于 AuthorizeAttribute 实现的登陆权限控制
- MVC5
- MVC5
- mvc5
- 自定义AuthorizeAttribute
- 扩展MVC5 Identity的Roles
- MVC5局部视图的调用
- 在ASP.NET MVC2中使用自定义的AuthorizeAttribute绕过内置的Membership/Role机制
- 在ASP.NET MVC2中使用自定义的AuthorizeAttribute绕过内置的Membership/Role机制
- 解决自定义AuthorizeAttribute实现授权管理,AllowAnonymous属性失效导致无法匿名访问控制器的问题
- c# mvc 自定义AuthorizeAttribute
- 如何用好 Chrome devtools
- 网站导航菜单+跳转
- TCP/IP和socket
- 关于mybatis返回单一对象或对象列表的问题
- 多一份行动,就会少一点焦虑
- MVC5的AuthorizeAttribute详解
- 学机器学习一
- 原生javascript Ajax异步请求代码小例子
- DTcms5(一)
- 安卓之Broadcast广播
- 1128. N Queens Puzzle (20)
- 【Java核心计算 基础知识(第9版)】第1章 Java程序设计概述
- elasticsearch增删改查
- Spring 自定义注解,配置简单日志注解