.net core Blazor与身份

.net core Blazor与身份,.net-core,model,identity,blazor,.net Core,Model,Identity,Blazor,我在.NETCore3.0中有一个项目,包含3个部分:api、共享和blazor应用程序 我在共享项目中添加了几个模型和一个用户模型: [Table("user")] public class User : IdentityUser<Guid> { [Required(ErrorMessage = "Firstname is required")] [StringLength(32, ErrorMessage = "Firstn

我在.NETCore3.0中有一个项目,包含3个部分:api、共享和blazor应用程序

我在共享项目中添加了几个模型和一个用户模型:

    [Table("user")]
    public class User : IdentityUser<Guid>
    {
        [Required(ErrorMessage = "Firstname is required")]
        [StringLength(32, ErrorMessage = "Firstname must be 32 charaters maximum")]
        [Column("firstname")]
        public string Firstname { get; set; }

        [Required(ErrorMessage = "Lastname is required")]
        [StringLength(32, ErrorMessage = "Lastname must be 32 charaters maximum")]
        [Column("lastname")]
        public string Lastname { get; set; }

        [Required(ErrorMessage = "Thumbnail link is required")]
        [StringLength(512, ErrorMessage = "Thumbnail link must be 512 charaters maximum")]
        [Column("thumbnail_link")]
        public string ThumbnailLink { get; set; }

        [Column("birthday")]
        public DateTime Birthday { get; set; }

        [Required(ErrorMessage = "CreationDate is required")]
        [Column("creation_date")]
        public DateTime CreationDate { get; set; }

        // [Required(ErrorMessage = "User role is required")]
        // [Column("user_role")]
        // public UserRole UserRole { get; set; }

        [Required(ErrorMessage = "Is a banned user is required")]
        [Column("is_banned")]
        public IsBanned IsBanned { get; set; }

        public ICollection<UserRole> UserRoles { get; set; }
        public ICollection<UserProgression> UserProgressions { get; set; }
        public ICollection<Playlist> Playlists { get; set; }
        // public ICollection<Message> MessagesReceived { get; set; }
        // public ICollection<Message> MessagesSended { get; set; }
        public ICollection<Rating> Ratings { get; set; }
        public ICollection<Course> Courses { get; set; }
        public ICollection<SubscriptionHistory> SubscriptionHistories { get; set; }

    }
因此,用户从IdentityUser继承,IdentityUser是以下内容的一部分:

PackageReference Include=“Microsoft.AspNetCore.Identity.EntityFrameworkCore”Version=“2.2.0”

我发现blazor不支持带有实体框架的包

那么我如何实现身份认证呢?如何在服务器端和前端之间共享我的模型?我是个初学者,很难找到关于这个主题的信息

欢迎各种帮助


谢谢

很遗憾,您无法与blazor应用程序共享IdentityUser型号。Blazor客户端在.Net标准2.0上运行,您的身份资产在Asp.Net核心上运行。您可以在asp.net核心端使用.net标准代码,但不能反过来使用


要解决此问题,请将IdentityUser模型移动到服务器,并在共享项目中创建一个“传输模型”,其中包含要向下传输到客户端的属性,然后从实际的AspNetUsers表行复制每个属性。您希望完全控制用户能够看到的有关AspNetUsers表的内容。希望这有帮助

很遗憾,您无法与blazor应用程序共享IdentityUser模型。Blazor客户端在.Net标准2.0上运行,您的身份资产在Asp.Net核心上运行。您可以在asp.net核心端使用.net标准代码,但不能反过来使用


要解决此问题,请将IdentityUser模型移动到服务器,并在共享项目中创建一个“传输模型”,其中包含要向下传输到客户端的属性,然后从实际的AspNetUsers表行复制每个属性。您希望完全控制用户能够看到的有关AspNetUsers表的内容。希望这有帮助

你说“转移模式”是什么意思?我想这样做是因为我有同样的问题,你能帮我吗?你说“转移模式”是什么意思?我想这样做是因为我有同样的问题,你能帮我吗?
Cannot find declaration of exported type 'System.Threading.Semaphore' from the assembly 'System.Threading, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
  Fatal error in IL Linker

  Unhandled Exception: Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'C:\Users\sebastien\.nuget\packages\system.buffers\4.5.0\lib\netstandard2.0\System.Bufers.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' ---> Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'C:\Users\sebastien\.nuget\packages\system.buffers\4.5.0\lib\netstandard2.0\System.Bufers.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
     at Mono.Linker.DirectoryAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
     at Mono.Linker.AssemblyResolver.Resolve(AssemblyNameReference
name, ReaderParameters parameters)
     at Mono.Linker.LinkContext.Resolve(IMetadataScope scope)
     --- End of inner exception stack trace ---
     at Mono.Linker.LinkContext.Resolve(IMetadataScope scope)
     at Mono.Linker.Steps.ResolveFromAssemblyStep.Process()
     at Mono.Linker.Steps.BaseStep.Process(LinkContext context)
     at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
     at Mono.Linker.Pipeline.Process(LinkContext context)
     at Mono.Linker.Driver.Run(ILogger customLogger)
     at Mono.Linker.Driver.Execute(String[] args, ILogger customLogger)
     at Mono.Linker.Driver.Main(String[] args)