如何使用令牌重定向到 Blazor
How to redirect to Blazor with token
我有一个 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]
,我不知道 why.Any 我曾尝试为 Blazor
的入口页面设置两条路由,但它没有加载它。
@page "/"
@page "/?token={token}"
@inherits HomeBase
@functions()
{
}
PS: 我不明白为什么服务器把 token
放在查询字符串中?
1) 要从获取参数中检索 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) 当你谈到在正文中发送令牌时,我不明白你问题的第二部分。
更多信息请访问 Get current Url in a Blazor component
我有一个 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]
,我不知道 why.Any 我曾尝试为 Blazor
的入口页面设置两条路由,但它没有加载它。
@page "/"
@page "/?token={token}"
@inherits HomeBase
@functions()
{
}
PS: 我不明白为什么服务器把 token
放在查询字符串中?
1) 要从获取参数中检索 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) 当你谈到在正文中发送令牌时,我不明白你问题的第二部分。
更多信息请访问 Get current Url in a Blazor component