我注册了一个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
答案 0 :(得分:0)
您可以尝试创建actionfilter来处理此问题,因为您知道要进入控制器/操作的请求。这只是一个想法。
http://www.codeproject.com/Articles/650240/A-Simple-Action-Filter-Overview
希望这有帮助。