允许未经授权请求特定的操作方法

时间:2014-09-12 13:59:29

标签: c# asp.net asp.net-mvc authentication

我注册了一个MessageHandler(带有继承自DelegatingHandler的config.MessageHandlers.Add(new ValidationHandler())。它检查每个Request的安全令牌并检查它是否有效。

我的控制器中有2或3个动作方法,无需任何授权即可访问。

我的问题: 首先调用MessageHandler。所以应该是来自世界各地的accessabel的动作方法将作为未经授权的请求处理。 我不是要改变MessageHandler的代码。 我试图添加allowanonymous属性,但我仍然得到未经授权的响应。

我发现了这篇文章Redirecting unauthorized controller in ASP.NET MVC。所以我目前的想法是将HandleUnauthorizedRequest上的用户转发给正确的操作方法。但我认为这不是最好的方式。

有更好的方法吗?有没有办法告诉web.config允许actionmethod1和actionmethod2作为未授权用户访问?

[编辑] 使用AuthorizeAttribute创建UnAuthorizeAttribute将用户仍然转发到操作方法不起作用。消息处理程序用

“杀死”请求
            statusCode = HttpStatusCode.Unauthorized;
            return Task<HttpResponseMessage>.Factory.StartNew(() => new HttpResponseMessage(statusCode));

因此不会调用UnAuthorizeAttribute。我正在使用asp.net mvc webapi

1 个答案:

答案 0 :(得分:0)

您可以尝试创建actionfilter来处理此问题,因为您知道要进入控制器/操作的请求。这只是一个想法。

http://www.codeproject.com/Articles/650240/A-Simple-Action-Filter-Overview

希望这有帮助。