我有一个asp.net mvc3应用程序,每个登录用户都可以访问某些特定数据。
例如,“用户A”可以访问“客户端1”但不能访问“客户端2”,而“用户B”可以访问“客户端2”而不能访问“客户端1”。
如果用户访问http://myApp/Clients/2
,我们会抛出自定义异常,例如ConfidentialityException
。
由此,我们可以将其记录在global.asax
Application_Error
中。但从那时起,我想知道最佳做法是什么:
我的preffered solition是第一个(带有401的错误页面),但是我没有看到如何从Application_Error设置http代码。
我将401状态代码更改为403,因为它不是身份验证错误,而是机密性。 403似乎更合适according to w3c。
答案 0 :(得分:2)
要设置状态代码,您可以使用以下内容:
HttpContextBase.Response.StatusCode = 401;
但是,如果你正在使用MVC,你可以简单地将结果设置为HttpUnauthorizedResult,这将为你设置http状态代码。