我在ASP.NET MVC控制器上使用了自定义授权过滤器,如果用户在特定操作中未通过授权,则该用户会将用户重定向到除登录屏幕之外的其他URL。
这对于返回视图的操作是可以的,但是我的许多操作都返回其他结果类型,例如PartialResult或JsonResult。
我当前的过滤器如下所示:
<AuthorizeWithRedirect(角色:=“ ServerAccess”,控制器:=“ Home”,操作:=“未经授权”)>
这表示如果用户不具有ServerAccess角色,则应将其重定向到/ Home / Unauthorized /
我很好奇其他人如何处理这个问题?当您考虑仅由客户端脚本AJAX调用调用的操作数时,这似乎特别成问题。/ Home / Unauthorized /操作如何知道调用者是否打算接收视图,partialview,json,内容等?
我认为您需要通过重定向传递该信息。
您可以通过几种方式处理此问题:
考虑为您需要的每种响应类型制定单独的操作方法-UnauthorizedJson,UnauthorizedHtml,UnauthorizedEtc …与原始操作响应类型相对应
通过将另一个参数添加到Unauthorized方法并将其附加到过滤器中的URL,从而通过重定向传递格式信息