小编典典

您如何处理对返回ViewResult以外的结果的操作的授权?

ajax

我在ASP.NET MVC控制器上使用了自定义授权过滤器,如果用户在特定操作中未通过授权,则该用户会将用户重定向到除登录屏幕之外的其他URL。

这对于返回视图的操作是可以的,但是我的许多操作都返回其他结果类型,例如PartialResult或JsonResult。

我当前的过滤器如下所示:

<AuthorizeWithRedirect(角色:=“ ServerAccess”,控制器:=“ Home”,操作:=“未经授权”)>

这表示如果用户不具有ServerAccess角色,则应将其重定向到/ Home / Unauthorized /

我很好奇其他人如何处理这个问题?当您考虑仅由客户端脚本AJAX调用调用的操作数时,这似乎特别成问题。/ Home / Unauthorized
/操作如何知道调用者是否打算接收视图,partialview,json,内容等?


阅读 197

收藏
2020-07-26

共1个答案

小编典典

我认为您需要通过重定向传递该信息。

您可以通过几种方式处理此问题:

  • 考虑为您需要的每种响应类型制定单独的操作方法-UnauthorizedJson,UnauthorizedHtml,UnauthorizedEtc …与原始操作响应类型相对应

  • 通过将另一个参数添加到Unauthorized方法并将其附加到过滤器中的URL,从而通过重定向传递格式信息

2020-07-26