- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
默认情况下,当用户未获得授权且 web.config 中的部分路由到 loginUrl 属性时,MVC Authorize 属性会设置 HttpContext.Response.StatusCode = 401。
我想对其他响应代码执行类似的操作。例如,我有一个名为 ActiveAccount 的属性,它验证用户的帐户当前是否处于事件状态,然后允许他们访问 Controller 。如果它们不活跃,我想将它们路由到特定的 Controller 并查看(以更新他们的帐户)。
我想复制处理此问题的授权属性方法,并将 StatusCode 设置为 410 之类的内容(警告:前面的数字凭空出现),并将用户路由到 web.config 文件中定义的位置.
我可以做什么来实现这种行为?或者有更简单的方法吗?
编辑:结果
我最终避免了 StatusCode,只是从属性内执行重定向,因为这要简单得多。简而言之,这是我的代码:
// using the IAuthorizationFilter allows us to use the base controller's
// built attribute handling. We could have used result as well, but Auth seems
// more appropriate.
public class ActiveAccountAttribute: FilterAttribute, IAuthorizationFilter
{
#region IAuthorizationFilter Members
public void OnAuthorization(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
return;
// ... code which determines if our customer account is Active
if (!user.Status.IsActive)
filterContext.Result = new RedirectToRouteResult("Default", new RouteValueDictionary(new {controller = "Account"}));
}
#endregion
}
最佳答案
您可以继承RedirectToRouteResult
类并为状态代码添加构造函数参数。
public class StatusRedirectResult : RedirectToRouteResult
private string _status;
public StatusRedirectResult(string action, RouteValueDictionary routeValues, string statusCode)
{
_status = statusCode;
base.RedirectToRouteResult(action, routeValues);
}
public override ExecuteResult(ControllerContext context)
{
context.HttpContext.Current.Response.Status = _status;
base.ExecuteResult(context);
}
}
要在 Controller 操作中使用它,只需
return StatusRedirect("NewAction", new RouteValueDictionary(new { controller = "TheController" }, "410");
关于asp.net-mvc - ASP.NET MVC 中有没有办法处理不同的 Response.StatusCode 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1396204/
public abstract class Enum> implements Comparable, Serializable class StatusCode extends Enum 在j
根据动态SDK: The previous operations can also be performed by using the Execute method with the appropri
如何在golang中间件中获取Response statusCode? ResponseWriter只有WriteHeader接口(interface),找不到get接口(interface)。 最佳
测试连接服务器 |选择对象 * 返回许多属性,其中包括 StatusCode。 我怎样才能只返回这个值?我最好的猜测是 $r = test-connection server $r.statuscod
有没有一种简单的方法可以在 Web 配置中捕获多个/所有 http 状态代码?目前我有 但是假设我想捕获 501、502、503 等等,我没有办法做一个范围或处理所有状态代码吗?如果可
据我了解,使用 ajax 处理错误结果的一种可能性如下: $.ajax({ url: someUrl, type: 'POST', success: function(data
我有这个异常(exception): HttpException {#689 ▼ -statusCode: 403 -headers: [] #message: ""
我正在使用 Hamcrest 对 REST API 进行单元测试。 当我发送请求时,我经常检查 200像这样的状态代码: public void myTest() { url = "route
谁能告诉我是否可以使用 jquery statusCode 将一个状态代码切换到下一个状态代码,以便一个响应可以处理 2 个状态代码?下面的代码有一个错误,但它显示了我想要实现的目标...400 下降
我已经阅读了几十篇关于如何正确处理来自 jQuery AJAX 调用的 HTTP 状态代码的文章,但我完全失败了。也许有一个错误?如果这个问题在其他地方得到了回答,请原谅我,但我根本无法让它发挥作用。
我正在尝试处理 302 重定向响应。我看到 HttpStatusCode 的 toString 方法有不同的行为。 HttpWebResponse response = (HttpWebRespons
我正在尝试在 ajax 调用的 StatusCode 中设置一个 bool 值,稍后我可以将其重新用于其他一些工作。这是我尝试过的: window.flag = false; // This
非常感谢任何正确方向的指针,我正在使用node/express,并且仍然是初学者,试图重用以前工作项目中的一些代码,但遇到了困难。 尝试访问用于验证电子邮件的 API,但响应没有提供我期望的状态代码。
我们正在将我们的解决方案之一移植到 PCL,但在 NET 框架基类库的受支持类和属性方面面临很多问题。为了使相同的功能在不同的平台上工作,我们实现了 WebClient,但我们在 WebResporn
下面是我用于 Google 登录的代码。我在应用程序文件夹中添加了 google-services.json 文件。我正在使用 classpath 'com.google.gms:google-ser
我正在使用锁定机制来确保两个并行调用不会更新导致意外行为的同一行。所以我的代码是这样的:(没有真实世界的例子) public class UserController { public Actio
我们正在编写一组类似 REST 的服务,我们将错误作为不同的 StatusCodes 返回。 在我们的客户端应用程序中,如果我们的工作流程不需要我们捕获并抛出异常来发现错误代码,我们更愿意这样做。 有
我有以下方法: public void SetHttpStatusCode(HttpStatusCode httpStatusCode) { Response.Stat
我有以下用于默认 jQuery AJAX 错误处理的代码: $.ajaxSetup({ error : function(jqXHR, textStatus, errorThrown) {
在 jquery Ajax 调用中,我当前正在处理 200 和 304 的 statusCode。但我还定义了“Error”来捕获可能返回的任何错误。 如果存在相关的验证消息,我们将返回状态代码 40
我是一名优秀的程序员,十分优秀!