当身份验证模式设置为 Windows 时 ASP.NET MVC 中的 AuthorizeAttribute 行为
我有一个受 AuthorizeAttribute
保护的控制器。当授权失败时,我只得到一个空白页面。如果我覆盖OnAuthorization()
,我可以看到调用base.OnAuthorization()
后filterContext.Result
为空(为什么?)。如果我重写 OnException() 并设置断点,它永远不会命中。有人可以解释一下它应该如何工作吗?如何让它重定向到指定页面?我可以在哪里注入来记录失败的授权尝试(最好不要编写自定义过滤器)?如果重要的话我会使用 MVC 3 RC1。
I have a controller protected with AuthorizeAttribute
. When the authorization fails i get just an empty page. If i override OnAuthorization()
i can see that after calling base.OnAuthorization()
filterContext.Result
is null (why?). If i override OnException()
and set a breakpoint it never hits. Can please someone explain how it's supposed to work? How can i make it redirect to specified page? Where can i inject into to log failed authorization attempts (better not to write custom filter)? I use MVC 3 RC1 if it's important.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您想要重写 AuthorizeAttribute.HandleUnauthorizedRequest 方法。这是默认实现:
您需要将 Result 设置为 RedirectResult (或其他结果,具体取决于您所需的逻辑)。这也是一个伐木的好地方。
You want to override the AuthorizeAttribute.HandleUnauthorizedRequest method. Here's the default implementation:
You'll instead want to set the Result to be a RedirectResult (or some other result depending on your desired logic). This would also be a good place for logging.