2012-02-02 2 views
0

Я пытался реализовать свой собственный AuthorizeAttribute для моего REST API, который я построил с WCF Web API Preview 6.Пользовательские MVC AuthorizeAttribute для 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

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

0

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

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

0

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

См. Ссылку: Custom MVC AuthorizeAttribute for ASP.NET Web API

+0

Спасибо. На самом деле просто переключился на новый веб-API MVC 4 и теперь начал работать с AuthorizeAttribute. Выложите решение, как только у меня будет время написать что-нибудь. – Remy