C# Blazor服务器中的信号器Cookie身份验证不起作用
在blazor server Signaler中,我有一个简单的私人聊天应用程序,用户可以登录、添加好友并与该好友聊天。C# Blazor服务器中的信号器Cookie身份验证不起作用,c#,asp.net-core,signalr,blazor,signalr-hub,C#,Asp.net Core,Signalr,Blazor,Signalr Hub,在blazor server Signaler中,我有一个简单的私人聊天应用程序,用户可以登录、添加好友并与该好友聊天。 对于登录,我使用了AspNetCore.Identity 现在,问题是应用程序在本地机器上运行得非常好,但当我在ngrok()中运行应用程序时,出现了一个错误,错误是error:System.Net.Http.HttpRequestException:Response status code不表示成功:401(未经授权).ngrok是一种跨平台应用程序,它使开发人员能够将本地
对于登录,我使用了
AspNetCore.Identity
现在,问题是应用程序在本地机器上运行得非常好,但当我在
ngrok()
中运行应用程序时,出现了一个错误,错误是error:System.Net.Http.HttpRequestException:Response status code不表示成功:401(未经授权).
ngrok是一种跨平台应用程序,它使开发人员能够将本地开发服务器公开到Internet上。 该软件使本地托管的web服务器似乎托管在ngrok.com的子域上,这意味着本地计算机上不需要公共IP或域名
下面是我们为向signlar hub验证用户身份所做的工作
在Host.cshtml中
@{
var cookie = HttpContext.Request.Cookies[".AspNetCore.Identity.Application"];
}
<body>
@* Pass the captured Cookie to the App component as a paramter*@
<component type="typeof(App)" render-mode="Server" param-Cookie="cookie" />
</body>
CookiesProvider.cs
public class CookiesProvider
{
public string Cookie { get; set; }
}
剃刀
@attribute [Authorize]
@* code omitted here... *@
@code{
protected override async Task OnInitializedAsync()
{
var container = new CookieContainer();
var cookie = new Cookie()
{
Name = ".AspNetCore.Identity.Application",
Domain = "localhost",
Value = CookiesProvider.Cookie
};
container.Add(cookie);
hubConnection = new HubConnectionBuilder()
.WithUrl(NavigationManager.ToAbsoluteUri("/chathub"), options =>
{
// Pass the security cookie to the Hub.
options.Cookies = container;
}).Build();
await hubConnection.StartAsync();
}
}
在枢纽
你在Github上发布了这个问题吗?我现在能给你的最好建议是删除域属性或提供不同的值,然后看看会发生什么。你看到了吗:@enet changing Domain property对我有用谢谢
@attribute [Authorize]
@* code omitted here... *@
@code{
protected override async Task OnInitializedAsync()
{
var container = new CookieContainer();
var cookie = new Cookie()
{
Name = ".AspNetCore.Identity.Application",
Domain = "localhost",
Value = CookiesProvider.Cookie
};
container.Add(cookie);
hubConnection = new HubConnectionBuilder()
.WithUrl(NavigationManager.ToAbsoluteUri("/chathub"), options =>
{
// Pass the security cookie to the Hub.
options.Cookies = container;
}).Build();
await hubConnection.StartAsync();
}
}
[Authorize()]
public class ChatHub : Hub
{
}