【发布时间】:2013-12-22 19:45:24
【问题描述】:
我非常接近把这件事做好,但仍然缺少一件事。
在一般情况下,当授权失败时,会发生以下情况:
filterContext.Result = new HttpUnauthorizedResult();
这会自动防止未经授权的 MVC 菜单选项卡呈现(因为 AuthorizeAttribute 为指向底层授权资源的每个选项卡调用)。
这按预期工作。但是,我想做这样的事情:
protected override void HandleUnauthorizedRequest(AuthorizationContext ctx) {
ctx.Result = new ViewResult{ ViewName = "Unauthorized"};
ctx.HttpContext.Response.StatusCode = 401;
这显示了共享的未经授权的视图(同时保持 url 原始,以便清楚什么是未经授权的)
同样有效,接受隐藏未经授权的菜单选项卡的部分。
据我所知,查看source for HttpUnhandledResult 它所做的只是将 StatusCode 设置为 401,在将我的分片视图设置为结果之后我也在这样做。
然而在我的实现中,未经授权的标签仍然显示,但我可以在日志中看到它们的授权失败..
我正在使用剑道菜单 (telerik)..
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-4 telerik kendo-ui authorization