我在具有角色和所有功能的Blazor Client Hosted项目中使用了Jwt身份验证,但是当我在Blazor Server端执行相同的操作时,它不起作用,例如,在Header中设置令牌后:
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {Model.Token}");
Console.WriteLine($"Is authenticated = {httpContext.HttpContext.User.Identity.IsAuthenticated}");
IsAuthenticated返回false,当我导航到主页(以引起刷新)时,IsAuthenticated仍然返回false,并且无法通过HttpContext.User.Identity.Name访问任何用户名!有没有解决方法。 (Blazor服务器端预览6中的默认身份验证仅限于本地化和其他用途,我不想使用它)
答案 0 :(得分:0)
我可以不用Cookie或标题就解决问题,我创建了一个Auth类,其中包含用户名,isauthenticated和角色和方法IsInRole,然后将该类注入(作为单例)到使用或填充此类的每个视图中,然后在成功登录时填充它(我使用Identity checkpasswordsigninasync)。我填充此类并通过应用程序使用它,在注销时,我只是创建一个空实例。 我认为,因为所有在服务器上运行的类都是安全的,并且它的唯一限制是页面刷新身份验证丢失并且HttpContext.User为空。