在我的 MVC 应用程序中,我有一个删除客户的控制器操作,我正在应用基于声明的授权来使用 WIF。
问题:如果有人没有访问权限,他们会在浏览器中看到异常(完整的堆栈跟踪),但我宁愿只是重定向他们。
这有效并允许我重定向:
public ActionResult Delete(int id)
{
try
{
ClaimsPrincipalPermission.CheckAccess("Customer", "Delete");
_supplier.Delete(id);
return RedirectToAction("List");
}
catch (SecurityException ex)
{
return RedirectToAction("NotAuthorized", "Account");
}
}
这可行,但会引发我不知道如何捕获的 SecurityException(当用户未获得授权时):
[ClaimsPrincipalPermission(SecurityAction.Demand, Operation = "Delete", Resource = "Customer")]
public ActionResult Delete(int id)
{
_supplier.Delete(id);
return RedirectToAction("List");
}
我想使用声明性方法,但不确定如何处理未经授权的请求。有什么建议么?