asp.net mvc添加到AUTHORIZE属性
发布时间:2020-12-15 23:02:08 所属栏目:asp.Net 来源:网络整理
导读:如何创建自定义属性以扩展MVC中的现有Authorize属性? 解决方法 从AuthorizeAttribute导出你的类.覆盖OnAuthorization方法.添加并设置CacheValidationHandler. public void CacheValidationHandler( HttpContext context,object data,ref HttpValidationStat
如何创建自定义属性以扩展MVC中的现有Authorize属性?
解决方法
从AuthorizeAttribute导出你的类.覆盖OnAuthorization方法.添加并设置CacheValidationHandler.
public void CacheValidationHandler( HttpContext context,object data,ref HttpValidationStatus validationStatus ) { validationStatus = OnCacheAuthorization( new HttpContextWrapper( context ) ); } public override void OnAuthorization( AuthorizationContext filterContext ) { if (filterContext == null) { throw new ArgumentNullException( "filterContext" ); } if (AuthorizeCore( filterContext.HttpContext )) { ... your custom code ... SetCachePolicy( filterContext ); } else if (!filterContext.HttpContext.User.Identity.IsAuthenticated) { // auth failed,redirect to login page filterContext.Result = new HttpUnauthorizedResult(); } else { ... handle a different case than not authenticated } } protected void SetCachePolicy( AuthorizationContext filterContext ) { // ** IMPORTANT ** // Since we're performing authorization at the action level,the authorization code runs // after the output caching module. In the worst case this could allow an authorized user // to cause the page to be cached,then an unauthorized user would later be served the // cached page. We work around this by telling proxies not to cache the sensitive page,// then we hook our custom authorization code into the caching mechanism so that we have // the final say on whether a page should be served from the cache. HttpCachePolicyBase cachePolicy = filterContext.HttpContext.Response.Cache; cachePolicy.SetProxyMaxAge( new TimeSpan( 0 ) ); cachePolicy.AddValidationCallback( CacheValidationHandler,null /* data */); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 是否可以使用Membership API更改用户名
- asp.net-web-api – 在Web API 2中使用属性路由时限制自动帮
- 如何在ASP.NET MVC中使用flot和jQuery?
- asp.net-mvc – 用于ASP.NET MVC的Spark T4模板
- 使用ASP.NET循环>
- asp.net – __doPostBack无法在回发时呈现
- asp.net-mvc – MVC禁用SelectListItem属性不起作用
- asp.net-mvc-4 – 我应该如何使用ReturnUrl = ViewBag.Retu
- asp.net – 当您的用户被黑客攻击时该怎么办
- asp.net-mvc – 如何使用wmd-editor控件检索markdown和html
推荐文章
站长推荐
- asp.net – 从DropDownList中删除列表项
- asp-classic – 如何在经典ASP中将数据POST到远程
- asp.net-mvc – ASP.NET MVC中的全局错误处理(控
- asp.net-mvc – 如何在Razor MVC 4中使用Ajax Co
- asp.net – 在Azure网站上启用gzip压缩
- 实体框架 – 如何添加外部参考ASP.Net MVC 5身份
- asp.net-mvc – 从头开始??学习asp.net mvc并且能
- asp.net-mvc – Azure托管的ASP.NET MVC网站删除
- 如何创建使用asp:ListItem列表作为子控件的ASP.
- asp.net – 如果表单字段为空,如何将NULL插入数据
热点阅读