Пользовательский MVC AuthorizeAttribute для WCF Web API Preview 6 - PullRequest
0 голосов
/ 02 февраля 2012

Я пытался реализовать свой собственный AuthorizeAttribute для моего REST API, который я построил с помощью WCF Web API Preview 6.

К сожалению, вызывается только конструктор, но не методы.Я что-то упускаю при регистрации?

[BasicHttpAuthorize]
[WebGet(UriTemplate = "")]
public IEnumerable<Supertext.API.Order> Get()
{

И это мой супер упрощенный код.

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class BasicHttpAuthorizeAttribute: AuthorizeAttribute
{
    public BasicHttpAuthorizeAttribute()
    {
    }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        return true;
    }


    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        //do the authorization
    }
}

Но, как я уже сказал, ни AuthorizeCore, ни метод OnAuthorization никогда не вызываются.

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 02 февраля 2012

AuthorizeAttribute и фильтры действий в целом являются специфическими артефактами ASP.NET MVC.Они не имеют ничего общего с WCF.Написание договора WCF с ним не будет иметь большого эффекта.

0 голосов
/ 15 марта 2012

Мне удалось завершить реализацию выше без HttpOperationHandler, но наследуя от System.Web.Http.AuthorizeAttribute вместо System.Web.Mvc.AuthorizeAttribute.Возможно, как только MCV, так и бывшие команды WCF будут полностью объединены, две реализации придут к центру, но сейчас изменение пространства имен выручило немало!

См. Ссылку: Настраиваемый MVC AuthorizeAttribute для ASP.NET Web API

0 голосов
/ 03 февраля 2012

Поскольку использование AuthorizeAttribute не работает с веб-API WCF, я нашел собственное решение.
Я построил пользовательский HttpOperationHandler и объединил его с атрибутом, поэтому получил функциональность, аналогичную MVC AuthorizeAttribute.

Результат здесь:
http://remy.supertext.ch/2012/02/basic-authentication-with-wcf-web-api-preview-6/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...