0

我有一个 asp.net mvc3 应用程序,每个登录的用户都可以访问一些特定的数据。

例如,“用户 A”可以访问“客户端 1”但不能访问“客户端 2”,而“用户 B”可以访问“客户端 2”但不能访问“客户端 1”。

如果用户 a 访问http://myApp/Clients/2,我们将抛出一个自定义异常,例如ConfidentialityException

由此,我们可以将其困在global.asax Application_Error. 但从那时起,我想知道最佳做法是什么:

  • 返回带有 http 403 代码的错误页面(如何?)
  • 只是返回一个错误页面。
  • 让它崩溃。
  • 其他建议?

我首选的 solition 是第一个(带有 401 的错误页面),但我看不到如何从 Application_Error 设置 http 代码。

编辑

我将 401 状态码更改为 403,因为这不是身份验证错误,而是机密性。根据 w3c , 403 似乎更合适。

4

1 回答 1

2

要设置状态代码,您可以使用以下内容:

HttpContextBase.Response.StatusCode = 401;

但是,如果您使用 MVC,您可以简单地将结果设置为HttpUnauthorizedResult,它将为您设置 http 状态代码。

于 2011-12-05T17:44:51.810 回答