Grundlegendes zu Asp.Net Identity

Ich bin ein Asp.net-Entwickler, aber sehr neu im Asp.net-Identitäts-Framework. Ich habe die Beispielanwendung studiert und bin auch einigen Tutorials zu Identity gefolgt, aber ich kann das Konzept immer noch nicht vollständig erfassen. Ich habe die Mitgliedschaft bei Asp.net sehr fest im Griff, aber Identität scheint nichts mit Mitgliedschaft zu tun zu haben. Ich werde erklären, was ich bisher getan habe.

Ich erstelle eine einfache Anwendung, in der ich den ersten Code-Ansatz verfolge. Ich habe ein Entitätsmodell für Benutzer erstellt, das von IdentityUser erbt und einige zusätzliche Felder enthält. Unten sehen Sie das Entitätsmodell für den Benutzer.

public class User : IdentityUser
{
    public int? CompanyID { get; set; }

    public bool? CanWork { get; set; }

    public bool? CanSearch { get; set; }

    public Company Company { get; set; }
}

Nun in den Beispielen wird der Name ApplicationUser verwendet, aber für meinen eigenen Zweck habe ich den Namen User verwendet. Es gibt auch eine Methode im User- oder ApplicationUser-Modell:

public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<User> manager)
    {
        CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Add custom user claims here
        return userIdentity;
    }

Ich kann den Zweck dieser Methode nicht verstehen. Auch aus einem Beispiel habe ich das folgende Modell für die Rolle verwendet,

public class Role : IdentityRole
{
    public Role()
    {

    }

    public Role(string roleName, string description)
        : base(roleName)
    {
        this.Description = description;
    }

    public string Description { get; set; }
}

Ich verstehe, dass ein zusätzliches Feld hinzugefügt wird, kann aber den Zweck eines überladenen Konstruktors nicht verstehen.

Die oben genannten Verwirrungen sind zweitrangig. Meine primäre Verwirrung ist, dass ich weiß, dass beim Erstellen von Entitätsmodellen mit DbSet und DbContext und beim Aufrufen einer Entitäts-Framework-Methode für den Zugriff auf die Datenbank die Datenbank erstellt / gelöscht wird, je nachdem, welchem Schema ich folge.

In Identität Welche Methode ist für die Erstellung der Identitätstabellen in der Datenbank verantwortlich? Ich habe eine IdentityConfig-Datei, in der ich ApplicationUserManager und ApplicationSignInManager deklariere. Ich habe auch eine Startdatei. Bisher hatte ich nur eine Startdatei im Ordner App_Start. Als ich die Anwendung ausführte und versuchte, auf Identitätsmethoden zuzugreifen, gab es einen Fehler und es wurde keine Datenbank erstellt. Ich habe die Klasse dann als partiell definiert und eine weitere partielle Klasse mit demselben Namen im Stammverzeichnis erstellt. Dann war die Ausnahme weg und es wurden Tabellen erstellt. Die Startup-Klasse ist also für die Erstellung von Identitätstabellen verantwortlich? In den AspNetUsers werden automatisch zusätzliche Spalten wie PhoneNumber, PhoneNumberConfirmed, TwoFactorEnabled erstellt. Ich brauche diese zusätzlichen Spalten nicht. Kann ich diese entfernen? Kann ich die Namen der erstellten Identitätstabellen ändern?

Ich weiß, das sind sehr grundlegende Fragen und überhaupt keine Frage, aber wenn ich kein grundlegendes Tutorial oder Beispiel für Anfänger finden könnte, wäre es sehr nützlich. Was ich gefunden habe, sind Beschreibungen jener Dinge, die ich nicht brauche oder die mich verwirren. Ich möchte verstehen und steuern können, wie Identität in meiner Anwendung funktionieren soll, aber bis jetzt scheint es mir, dass weder ich sie vollständig verstehe noch in der Lage bin, sie an meine Bedürfnisse anzupassen. Es sind ähnliche Tutorials und Beispiele, die mir beibringen, wie man Sätze macht, aber ich kann die Alphabete nicht verstehen. :

Antworten auf die Frage(2)

Ihre Antwort auf die Frage