我的目标是如果用户点击他所在的页面链接(或张贴表单),将弹出一个模式窗口未授权的,因为它比重定向到通用错误页面更好的用户体验。当未经授权导航到页面时,大多数不冒险的方式使模式窗口弹出
我所做的就是实现
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
// ...
}
,这样,如果该请求是一个非AJAX请求,然后将其重定向到同一个页面(给住在同一页上的错觉),并追加查询字符串与"forbiddenRedirect=true"
然后JavaScript打开错误模式。我试图想出一个比使用查询字符串更好的方法。据我所知,JavaScript无法访问响应头文件,只能访问URL。这就是为什么我使用查询字符串解决方案。但也许在MVC中,我可以通过某种方式重定向并传递基本控制器可以识别的某种令牌,然后将其添加到查看包中,如ViewBag.IsRedirectFromUnauthorizedAction = true
。
有什么建议吗?