0

我在我的 asp 4.5 网站中使用 ClaimsPrincipalPermission 进行授权。

这工作正常。

但是,当用户尝试调用一个不允许他访问的页面时,返回的错误代码是 500,而不是像 401 这样的错误代码。

这是预期的行为吗?我假设 401 会更多地表达为什么这个页面不能被调用。

还是我有错误?在调试器中,我看到正确抛出了安全异常。

有没有办法改变这种行为?有谁知道为什么会这样?

4

3 回答 3

2

ClaimsPrincipalPermission 引发 SecurityException。您可能想使用与 Web 框架更好地配合的东西......

见这里: http: //leastprivilege.com/2012/10/26/using-claims-based-authorization-in-mvc-and-web-api/

于 2012-12-19T07:09:55.860 回答
1

500 错误代码似乎是 SecurityExceptions 的默认响应。

这个推理对我来说很有意义,因为 ASP.NET 不一定知道被拒绝访问的用户,它所知道的只是 SecurityException 被抛出某个地方。您的网站本身可能没有足够的权限来做某事,在这种情况下应该有 500 个。

异常过滤器是分析未捕获异常并找出您想要返回的 HTTP 代码的好方法。

于 2012-12-18T20:38:25.707 回答
0

ClaimsPrincipalPermissionAttribute 由 CLR 调用,并在角色检查失败的情况下引发 SecurityException。在这里查看解决方案。

于 2015-01-20T00:15:04.960 回答