Blazored LocalStorage-我做错了什么



im learning blazor still-want to add something so simple popular Blazored LocalStorage但是有一些基本的麻烦/问题

代码为:

using Microsoft.AspNetCore.Components.Authorization;
using S3.Client.Shared.Services;
using System.Security.Claims;
namespace S3.Client.Helpers
{
public class MyAuthenticationStateProvider : AuthenticationStateProvider
{
private Blazored.LocalStorage.ISyncLocalStorageService l;
public MyAuthenticationStateProvider(Blazored.LocalStorage.ISyncLocalStorageService l)
{
this.l= l;
}
public override async Task<AuthenticationState> GetAuthenticationStateAsync()
{
AuthenticationState aut;
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name, "xxxyyyzzz"),
new Claim(ClaimTypes.Role, "Administrator")
};
ClaimsPrincipal p = new ClaimsPrincipal(new ClaimsIdentity(claims));
l.SetItem<ClaimsPrincipal>("User", p);
ClaimsPrincipal principal =  l.GetItem<ClaimsPrincipal>("User");

bool x = p == principal;

if (principal != null && principal.Claims.Count() >0 )
{
aut = new AuthenticationState(principal);
}
else
{
var anonymous = new ClaimsIdentity();
aut = new AuthenticationState(new ClaimsPrincipal(anonymous));
}
return await Task.FromResult(aut);

请告诉我

为什么x是FALSE?应该是同一个对象吗?

bool x = p.Claims.Count() == principal.Claims.Count() 

仍然是假的。在调试中,我在p.identities中看到了原则上的1 a,d_身份=0…

感谢并问候

这是OP在以下问题的评论中接受的答案:

序列化/反序列化问题的最可能原因是用于存储/检索数据的JSON序列化程序不喜欢Principal的结构(因此序列化程序以某种方式忽略了声明集合(。

一种解决方法是提取对简单数据对象(类型/值(的声明,并将声明集合存储为简单数组。

相关内容

  • 没有找到相关文章

最新更新