Как перенаправить на Blazor с токеном - PullRequest
0 голосов
/ 25 марта 2019

У меня есть Middleware, который выполняет аутентификацию и затем должен перенаправить на веб-приложение Blazor.

Проблема в том, что я вставил token в запрос и хочу егов теле запроса.

Промежуточное программное обеспечение:

public async Task Invoke(HttpContext context) {
    string token = context.Request.Query["token"];

    if (!context.User.Identity.IsAuthenticated) {
         //do some logic to authenticate
    }
    else  
        await this.next(context);
}

Настройка:

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
{
    app.UseResponseCompression();
    app.UseAuthentication();
    app.UseMiddleware<MultiAuthWare>();

    app.UseMvc(routes => {
                routes.MapRoute(name: "default", template: "{controller}/{action}/{id?}");
    });

    app.UseBlazor<Client.Startup>();
}

Точка входа Blazor:

Сервер перенаправляет на:http://localhost:[portno]/?token=[a string] и я не знаю почему. Любой, кто пытался установить оба маршрута для страницы входа Blazor, и он не загружает ее.

@page "/"
@page "/?token={token}"
@inherits HomeBase
@functions()
{

}

PS: Я не понимаю, почему сервер помещает token в строку запроса?

1 Ответ

1 голос
/ 25 марта 2019

1) Чтобы извлечь token из параметров получения, вам нужно проанализировать текущий URL , вы можете сделать это в вашем HomeBase:

        var url = UriHelper.GetAbsoluteUri();  // By injection (see link)
        var uriBuilder = new UriBuilder(url);  // System namespace
        var q = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);
        var token = q["token"];

2) Я не понимаю вторую часть вашего вопроса, когда вы говорите о том, чтобы отправить токен в теле.

...