2016-12-23 2 views
6

Привет. Я пытаюсь создать настраиваемый фильтр полномочий, который позволит мне автоматически разрешать запросы, исходящие из localhost (которые будут использоваться для моих тестов).Пользовательский авторизованный фильтр с ядром aspnet

Я нашел следующее для Asp.net, однако у меня возникли проблемы с переносом его на ядро ​​asp.net.

public class MyAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (httpContext.Request.Url.IsLoopback) 
     { 
      // It was a local request => authorize the guy 
      return true; 
     } 

     return base.AuthorizeCore(httpContext); 
    } 
} 

Как перенести это в ядро ​​asp.net?

ответ

8

Вы можете создать промежуточное программное обеспечение, в котором вы можете автоматически авторизовать запросы, исходящие из localhost.

public class MyAuthorize 
{ 
    private readonly RequestDelegate _next; 
    public MyAuthorize(RequestDelegate next) 
    { 
     _next = next; 
    } 

    public async Task Invoke(HttpContext httpContext) 
    { 
    // authorize request source here. 

    await _next(httpContext); 
    } 
} 

Затем создайте метод расширения

public static class CustomMiddleware 
{ 
     public static IApplicationBuilder UseMyAuthorize(this IApplicationBuilder builder) 
     { 
      return builder.UseMiddleware<MyAuthorize>(); 
     } 
} 

и, наконец, добавить его в запуске Configure метода.

app.UseMyAuthorize(); 

Asp.Net ядро ​​не имеет IsLoopback собственности. Вот работа вокруг для этого https://stackoverflow.com/a/41242493/2337983

Вы также можете прочитать больше о Middleware здесь

+1

Спасибо работал лакомство :-) – Jamesla

Смежные вопросы