asp.net-mvc – 在Asp.Net MVC 2中有一种更好的方法来返回401状
我的网站的一部分有一个轻量级的xml / json REST API.我的大部分网站都在表单身份验证后面,但只有部分API操作需要身份验证.
我有一个用于我的API的自定义AuthorizeAttribute,用于检查某些权限,当它失败时会产生401.一切都很好,除非我使用表单auth,Asp.net方便地将其转换为302重定向到我的登录页面. 我已经看到一些以前的问题,似乎有点hackish要么返回403而不是在global.asax protected void Application_EndRequest()中放入一些逻辑 > Previous Question 我现在正在做的有点像其中一个问题,但不是检查Application_EndRequest()的302,而是让我的authorize属性返回666,这表明我需要将它设置为401. 这是我的代码: protected void Application_EndRequest() { if (Context.Response.StatusCode == MyAuthAttribute.AUTHORIZATION_FAILED_STATUS) { //check for 666 - status code of hidden 401 Context.Response.StatusCode = 401; } } 即使这有效,我的问题是Asp.net MVC 2中有什么东西会阻止我这么做吗?或者,一般来说有更好的方法吗?我认为对于那些做REST api的人或只是在他们的控制器中执行ajax请求的人来说,这会有很多.你想要的最后一件事是做一个请求并获取登录页面的内容而不是json. 解决方法
如何使用自定义过滤器修饰控制器/操作:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class,Inherited = true,AllowMultiple = true)] public class RequiresAuthenticationAttribute : FilterAttribute,IAuthorizationFilter { public void OnAuthorization(AuthorizationContext filterContext) { var user = filterContext.HttpContext.User; if (!user.Identity.IsAuthenticated) { filterContext.HttpContext.Response.StatusCode = 401; filterContext.HttpContext.Response.End(); } } } 在你的控制器中: public class HomeController : Controller { public ActionResult Index() { return View(); } [RequiresAuthentication] public ActionResult AuthenticatedIndex() { return View(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net mvc errorhandler没有显示自定义错误页面
- asp.net – 我可以同时拥有Controller和ApiController吗?
- asp.net-mvc – 使用Fluent验证进行不显眼的自定义/条件验证
- .net – IDictionary到SelectList?
- asp.net-mvc – 如何使用Html.DropDownList为默认选项设置值
- asp.net – MVC5认证中的“和主域之间的信任关系失败”
- asp.net-mvc – 加载登录表单时网站速度慢
- asp.net – WebAPI不返回XML,即使有正确的Accepts头
- asp.net-mvc – MVC中的模型含义
- asp.net-mvc – 带有实体框架的MVC控制器的T4模板 – 主机的
- asp.net-mvc – ASP.NET MVC中依赖于语言的路由
- asp.net-mvc-3 – 用于ASP.NET MVC的Razor View
- Asp.net实现MVC处理文件的上传下载功能实例教程
- asp.net – 使用MVC 4的.NET 4.5数据访问应用程序
- Azure Event Hub 技术研究系列3-Event Hub接收事
- asp.net-mvc – 如何为ASP.NET 4.5 Web API创建M
- asp.net-mvc – 在Ubuntu 16.04中运行ASPNET Cor
- ML.NET技术研究系列-2聚类算法KMeans
- ASP.net Gridview突出显示多列中的最大值
- asp.net-mvc-3 – 内部模型的自定义模型绑定器