asp.net-mvc-2 – 如何在Asp.net MVC2中通过Ajax调用处理Unautho
简要:
我在我的框架中有一个子类的AuthorizeAttribute,我正在进行自定义授权. 我正在通过jQuery从正常的asp.net mvc视图渲染切换到Ajax渲染.因此,应用程序中的每个链接都执行ajax调用以获取数据. 为了满足这个需求,我将大部分页面转换为部分视图,以便每个ajax请求只获取需要在页面上更新的部分. 在正常视图呈现期间,当请求未经授权时,它将被重定向到web.config中描述的登录页面.转换为Ajax之后,事情有点不同,因为我不想在ajax请求中使用登录页面的标记,但想要在其中进行结构化响应,以便我可以在ajax调用中相应地执行操作. 为了做到这一点,我相信我必须覆盖子类的AuthorizeAttribute类中的HandleUnauthorizedRequest方法,并将filterContext.Result设置为json结果.但在这样做的过程中,我如何区分未经授权的请求和成功的请求,因为从ajax调用的角度来看,两者都是成功的响应;因此将在成功处理程序中处理. 处理这个问题的正确方法是什么? 解决方法
我刚想通了,我可以在HandleUnauthorized中正常请求和ajax请求之间进行过滤
我在AuthorizeAttribute子类中重写的请求方法.对于ajax请求,我可以为此创建一个json结果或其他内容,对于正常请求,它仍然会显示登录页面.代码如下: protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { if (filterContext.RequestContext.HttpContext.Request.IsAjaxRequest()) { JsonResult UnauthorizedResult = new JsonResult(); UnauthorizedResult.Data = "{ request : 'unauthorized' }"; UnauthorizedResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet; filterContext.Result = UnauthorizedResult; } else { base.HandleUnauthorizedRequest(filterContext); } } 我仍然不会将我的问题标记为已解决,所以如果有人能提出更好的方法,我仍然愿意接受建议. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – html.dropdownlist MVC3混乱
- asp.net-mvc – ASP.NET MVC应用程序自定义错误页面不显示在
- asp-classic – 如何清除所有cookie?
- 有条件地排除ASP.NET WebForms中的一个HTML块
- asp.net-core – 如何注入对特定IHostedService实现的引用?
- asp.net – 如何在GridView中隐藏TemplateField列
- asp.net – 如何使用Forms身份验证保留默认页面?
- 如何在ASP.NET MVC中实现Disqus?
- asp.net-web-api – ASP.NET WebApi测试 – 断言请求返回40
- asp.net-mvc – Telerik MVC Grid – 可以为null的DateTime
- asp.net-mvc – 用于asp.net的rails样式数据库迁
- asp.net-mvc – 十进制的最佳数据注释(18,2)
- asp.net – 将会话变量传递给SQLDataSource时出错
- asp.net – 如何发布站点从命令行与一些发布配置
- asp.net-mvc – telerik-grid onRowSelect如何获
- 将ASP.NET验证与JQuery相结合的优雅方式
- asp.net-mvc – 如何阻止Elmah伐木?
- asp.net – FormView ConvertEmptyStringToNull和
- asp.net-mvc – 人们如何使用编辑器/显示模板与H
- asp.net-mvc – 在MVC中的业务规则