我正在开发一个使用 ACS 进行身份验证的 ASP.NET MVC 应用程序。用户必须经过身份验证才能访问站点的任何部分。
我已经创建并配置了我的 ClaimsAuthorizationManager,将我的自定义逻辑放在 CheckAccess 方法中,并且我在使用 ThinkTecture 的 IdentityModel 属性的控制器方法上以声明方式使用它。
例如:[ClaimsAuthorize("Edit", "Clients")]
如果经过身份验证的用户尝试访问他们没有足够权限访问的资源,则 CheckAccess 方法将按预期返回 false。但是,用户随后会立即再次重定向到登录页面。这显然是不正确的,因为用户已经过身份验证(只是未授权)。我希望用户被重定向到一个视图,通知用户他们无权访问所需的资源。我一直无法在管道或配置中找到正确的位置来实现这一点。
我能够做到这一点的唯一方法是在 CheckAccess 中引发自定义异常,而不是返回 false,然后在 Application_Error 中处理异常。这显然是不正确的。实现我想要的结果的正确模式是什么?
谢谢
垫