Как я могу добавить аутентификацию для моего проекта, используя уже существующую пользовательскую таблицу в ядре ASP.net? - PullRequest
0 голосов
/ 05 января 2019

Я не могу построить Identity на пользовательской таблице, которая уже существует, и я не могу изменить пользовательскую таблицу в Identity

Я создал модели, а затем сгенерировал элементы управления и представления.

https://imgur.com/Q6yhKgZ.png

Затем я пытаюсь создать новую личность путем добавления нового элемента лесов, но я не могу использовать уже существующую пользовательскую таблицу

https://imgur.com/V5YCuyz.png

И я также попытался создать новый проект и сначала создать Identity, а затем изменить пользовательскую таблицу Identity, добавив несколько столбцов, а затем создать мои таблицы в том же контексте, но я не найду модель пользователя, чтобы изменить его и создать отношения с другими объектами.

[Table("User")]
public class User
{
    [Key]
    public int Id { get; set; }

    [Required]
    [Display(Name = "Name")]
    [DataType(DataType.Text)]
    public string Name { get; set; }

    [Required]
    [Display(Name = "Phone Number")]
    [DataType(DataType.PhoneNumber)]
    public string Phone { get; set; }


    [Required]
    [Display(Name = "Email Address")]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }


    [Required]
    [Display(Name = "Password")]
    [DataType(DataType.Password)]
    [StringLength(20, MinimumLength = 6)]
    public string Password { get; set; }

    [Required]
    [Display(Name = "Confirm Password")]
    [DataType(DataType.Password)]
    [Compare("Password", ErrorMessage = "Confirm password doesn't match, Type again !")]
    [NotMapped]
    public string ConfirmPassword { get; set; }

    [Required]
    [Display(Name = "Gender")]
    [DataType(DataType.Text)]
    public string Gender { get; set; }

    [Required]
    [Display(Name = "Birth Date")]
    [DataType(DataType.Date)]
    [CustomDate(ErrorMessage = "Use Correct Birthdate")]
    public DateTime BirthDate { get; set; }

    public bool Eanble { get; set; }
    public string Permissions { get; set; }

    [DataType(DataType.DateTime)]
    public DateTime CreateAt { get; set; }
    [DataType(DataType.DateTime)]
    public DateTime UpdateAt { get; set; }

    [InverseProperty("Owner")]
    public List<Article> Articles { get; set; }


    [InverseProperty("Owner")]
    public List<Consultation> Consultations { get; set; }


    [InverseProperty("Owner")]
    public List<ConsultationComment> ConsultationComments { get; set; }
}

1 Ответ

0 голосов
/ 05 января 2019

Вы выбрали неправильный подход. Чтобы добавить свои собственные пользовательские свойства для пользователя, вы должны создать класс, производный от Microsoft.AspNetCore.Identity.IdentityUser. Там вы можете добавить свои собственные свойства, которые будут добавлены в таблицу. Вот как вы можете это сделать:

// using Microsoft.AspNetCore.Identity; is needed
public class ApplicationUser : IdentityUser
{
    public int Age { get; set; } 
}

Теперь вы должны создать класс, производный от IdentityDbContext:

 public class AppIdentityDbContext : IdentityDbContext<ApplicationUser>
{
    public AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options)
        : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
    }
}

Это в основном DbContext с двумя наборами DbSets, которые будет использовать Identity.

Затем перейдите в файл Startup.cs и добавьте следующую строку в ConfigureServices:

services.AddIdentity<ApplicationUser, IdentityRole>()
   .AddEntityFrameworkStores<AppIdentityDbContext>();

Теперь вы можете построить свой проект и увидеть изменения, примененные к вашей базе данных. Вы не можете удалить свойства Identity, но вы можете добавить свои собственные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...