asp.net-mvc – ASP.NET MVC从控制器抛出并处理错误
发布时间:2020-12-16 09:34:15 所属栏目:asp.Net 来源:网络整理
导读:在我的控制器中,让我们说编辑用户.在我的控制器中,我检查用户是否有权编辑然后我想抛出某种身份验证或禁止的错误,这将导致错误页面. 有没有办法做到这一点,而不是仅为错误创建控制器和操作?这样做的正确方法是什么? 解决方法 以下是您可以使用的自定义授权
在我的控制器中,让我们说编辑用户.在我的控制器中,我检查用户是否有权编辑然后我想抛出某种身份验证或禁止的错误,这将导致错误页面.
有没有办法做到这一点,而不是仅为错误创建控制器和操作?这样做的正确方法是什么? 解决方法
以下是您可以使用的自定义授权属性的示例:
public class CustomAuthorizeAttribute : AuthorizeAttribute { protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { if (!filterContext.HttpContext.User.Identity.IsAuthenticated) { // if the user is not authenticated render the AccessDenied view filterContext.Result = new ViewResult { ViewName = "AccessDenied" }; } } } 然后用这个属性装饰你的控制器动作: [CustomAuthorizeAttribute] public ActionResult SomeAction() { ... } 您应该注意这种方法的一个警告.如果用户未被授权,则服务器发送200状态代码,该代码不是非常友好的SEO.发送401状态代码会更好.问题是,如果您使用表单身份验证,则会有一个自定义模块附加到ASP.NET执行管道,每当服务器发送401状态代码时,它就会被拦截并自动重定向到登录页面.此功能是设计使然,不是ASP.NET MVC中的错误.它一直都是这样的. 事实上,有一种方法可以解决这种不愉快的情况: 您可以像这样修改自定义授权过滤器: public class CustomAuthorizeAttribute : AuthorizeAttribute { protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { if (!filterContext.HttpContext.User.Identity.IsAuthenticated) { // if the user is not authenticated render the AccessDenied view filterContext.HttpContext.Items["unauthorized"] = true; } } } 在Global.asax中: protected void Application_EndRequest() { if (Context.Items.Contains("unauthorized")) { Context.Response.Clear(); Context.Response.StatusCode = 401; Context.Server.Transfer("~/401.htm"); } } 现在那更好了.您将获得具有自定义错误页面的401状态代码.尼斯. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 从两个表(join)获取数据,并使用linq返回结果
- asp.net – 在.NET中使用TinyMCE有一种简单的Spellcheck方法
- 代码翻译:ASP.NET Server.Transfer in PHP
- asp.net – IE6 vs IE8,按钮vs超链接,CSS渲染问题
- asp.net-mvc – MVC5:@ Html.TextBoxFor(或EditorFor)可以
- ASP.NET MVC在IIS7下发布无法显示的解决办法
- asp.net – ServiceReference是一个自托管的WCF服务
- asp.net-web-api – owin cors或web api cors
- asp.net-web-api – 无法识别Web Api [可查询]属性
- Asp.Net MVC 3 JSON模型绑定无法正常工作
推荐文章
站长推荐
- asp.net – 图像文件正由另一个进程使用
- asp.net-mvc-3 – 从JsonResult MVC3 / Razor中动
- 如何在ASP.Net webform中使用标签?
- asp.net – Internet Explorer中的“通过电子邮件
- asp.net-mvc-2 – 向下维护页面?
- ASP.NET MVC 4和会话安全漏洞
- asp.net – 什么是SNIReadSyncOverAsync,为什么需
- asp.net – .resx vs数据库vs用于提供本地化/全球
- asp.net-core – 是否可以/建议使用EFCore 2.1数
- [译]ASP.NET Core 2.0 带初始参数的中间件
热点阅读