User.IsInRole () всегда ложно в промежуточном программном обеспечении - PullRequest
0 голосов
/ 18 мая 2018

Я получил простой промежуточный класс:

    public class RouterMiddleware {
    private readonly RequestDelegate _next;

    public RouterMiddleware(RequestDelegate next)
    {
        this._next = next;
    }

    public async Task Invoke(HttpContext context)
    {

        if (!context.User.IsInRole("Guest"))
        {
            await _next.Invoke(context);
            return;
        }

        if (context.Request.Path.StartsWithSegments("/home/") 
            || context.Request.Path.StartsWithSegments("/api/profile/")
        {
                await _next.Invoke(context);
        }
        else
        {
            context.Response.Redirect("/home/");
            return;
        }
    }

}

И context.User.IsInRole("Guest") возвращает false для любой роли в любом случае.Есть ли способы проверить роль пользователя в классе промежуточного программного обеспечения?

1 Ответ

0 голосов
/ 18 мая 2018

Проблема была в Startup.cs.Заказ промежуточного программного обеспечения был:

        app.UseMiddleware<Middleware.RouterMiddleware>();
        app.UseAuthentication();

, но должен быть:

        app.UseAuthentication();
        app.UseMiddleware<Middleware.RouterMiddleware>();
...