Utworzono niestandardowy model użytkownika dla struktury podmiotu i tożsamości asp.net. Sprawdziłem inne odpowiedzi tutaj, są one blisko mojego pytania, ale odpowiedzi nie dotyczą mojego wymogu. więc proszę tutaj.Po tożsamości użytkownika niestandardowego, User.Identity.GetUserId() zwraca nieprawidłowy typ jako ciąg
Wszystko w porządku. Ale gdy próbuję uzyskać identyfikator użytkownika, takich jak:
ApplicationUser user = await manager.FindByIdAsync(User.Identity.GetUserId());
User.Identity.GetUserId() ciąg zwrotny. Skonfigurowałem to jak Guid. Ale zwraca ciąg :(
Moje zajęcia są tutaj. Proszę mi pomóc, jak mogę dostać User.Identity.GetUserId() w kontrolerze Web API GUID?
public class GuidUserLogin : IdentityUserLogin<Guid>
{
}
public class GuidUserRole : IdentityUserRole<Guid>
{
}
public class GuidUserClaim : IdentityUserClaim<Guid>
{
}
public class GuidRole : IdentityRole<Guid, GuidUserRole>
{
}
//public class GuidUserContext : IdentityDbContext<ApplicationUser, GuidRole, Guid, GuidUserLogin, GuidUserRole, GuidUserClaim> { }
public class GuidUserStore : UserStore<ApplicationUser, GuidRole, Guid, GuidUserLogin, GuidUserRole, GuidUserClaim>
{
public GuidUserStore(DbContext context)
: base(context)
{
}
}
public class GuidRoleStore : RoleStore<GuidRole, Guid, GuidUserRole>
{
public GuidRoleStore(DbContext context)
: base(context)
{
}
}
public class ApplicationUser : IdentityUser<Guid, GuidUserLogin, GuidUserRole, GuidUserClaim>, ICreateDateRequired
{
public ApplicationUser()
{
}
[Key]
public Guid UserId { get; set; }
public override Guid Id { get; set; }
public override string UserName { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string Password { get; set; }
//Matching Attributes
public override string Email { get; set; }
public string FacebookId { get; set; }
public string TwitterId { get; set; }
public string GoogleId { get; set; }
public override string PhoneNumber { get; set; }
public string SocialAccessToken { get; set; }
public string Gender { get; set; }
public virtual List<Shade> Shades { get; set; }
[InverseProperty("ParentUser")]
public virtual List<UserFriendship> Friends { get; set; }
public virtual List<Contact> Contacts { get; set; }
//[Column(TypeName = "DateTime2")]
//[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime? CreateDate { get; set; }
public string ImageUrl { get; set; }
public string ThumbUrl { get; set; }
public string BackUrl { get; set; }
public virtual List<ContactDetail> UserContactDetails { get; set; }
}
Ale gdy próbuję uzyskać identyfikator Guid w kontrolerze web api, zwraca ponownie ciąg znaków. var stringResult = IdentityExtensions.GetUserId (RequestContext.Principal.Identity); – Ras
Wygląda na to, że problem z przestrzenią nazw jest nieprawidłowy. –
Dzięki. Naprawiłem, jak powiedziałeś. A teraz daje błąd. Podczas generowania modelu wykryto jeden lub więcej błędów sprawdzania poprawności: GuidUserStore:: EntityType "GuidUserStore" nie ma zdefiniowanego klucza. Zdefiniuj klucz dla tego EntityType. UserStores: EntityType: EntitySet "UserStores" jest oparte na typie "GuidUserStore", który nie ma zdefiniowanych kluczy. – Ras