C# 申请中的保密处理

C# 申请中的保密处理,c#,asp.net-mvc-3,security,global-asax,confidentiality,C#,Asp.net Mvc 3,Security,Global Asax,Confidentiality,我有一个asp.net mvc3应用程序,每个登录的用户都可以访问某些特定的数据 例如,“用户A”可以访问“客户端1”,但不能访问“客户端2”,而“用户B”可以访问“客户端2”,但不能访问“客户端1” 如果用户a访问http://myApp/Clients/2,我们将抛出一个自定义异常,例如机密性异常 由此,我们可以将其困在global.asaxApplication\u Error中。但从这一点上讲,我想知道最佳做法是什么: 返回带有http 403代码的错误页面(如何?) 只是返回一个错误

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

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

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

由此,我们可以将其困在
global.asax
Application\u Error
中。但从这一点上讲,我想知道最佳做法是什么:

  • 返回带有http 403代码的错误页面(如何?)
  • 只是返回一个错误页面
  • 让它崩溃吧
  • 其他建议
我的首选孤子是第一个(带有401的错误页面),但我不知道如何从应用程序错误设置http代码

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

要设置状态代码,可以使用以下命令:

HttpContextBase.Response.StatusCode = 401;

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

据我所见,
HttpUnauthorizedResult
只需重定向到登录页面,它不会将状态设置为401。在这种情况下,我不想要登录页面,因为用户已经登录。他只是没有查看x数据的权利。在这种情况下,401可能不是一件好事,我不确定。HttpUnauthorizedResult只是将响应代码设置为401(Unauthorized),因为用户未经授权Asp.Net将显示登录页面,以便授权用户查看他们请求的信息。