如何使用令牌重定向到Blazor

时间:2019-03-25 14:58:47

标签: cookies middleware blazor

我有一个Middleware执行身份验证,然后应该重新路由到Blazor Web应用程序。

问题是我在请求查询中放入了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 个答案:

答案 0 :(得分:1)

1)要从get参数中检索token,您应该解析current 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)当您谈论在体内发送令牌时,我不理解您问题的第二部分。