Laden...

Identity 2.0 - ohne IdentityUserClaim und IdentityUserLogin

Erstellt von Thoxx vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.273 Views
Thoxx Themenstarter:in
112 Beiträge seit 2008
vor 8 Jahren
Identity 2.0 - ohne IdentityUserClaim und IdentityUserLogin

Hallo,

ich möchte für eine MVC5 Anwendung zum ersten Mal das Identity 2.0 Framework auf einer bestehenden Datenbank nutzen.

Ich habe mir bereits einen eigenen _IdentityUser _implementiert, um Properties erweitert und in meinem Context auf eine eigene Tabelle gemapped.

Da ich weder Identity-Logins, noch die Identity-Claims benötige, würde ich mir eigentlich auch gerne die beiden Tabellen auf der Datenbank sparen wollen.
Gibt es dafür einen einfachen Weg?

Mein Versuch war wie folgt:


protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
	base.OnModelCreating(modelBuilder);
	modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

	modelBuilder.Ignore<IdentityUserClaim>();
	
	EntityTypeConfiguration<Nutzer> nutzerConfig = modelBuilder.Entity<Nutzer>().ToTable("Nutzer");
	
	nutzerConfig.Ignore(p => p.Claims);
}

Das baut und läuft zwar erst mal, aber spätestens wenn ich mir im Controller einen Nutzer per

UserManager.FindByName("XXX");

holen will, fliegt eine Exception:> Fehlermeldung:

The navigation property 'Claims' is not a declared property on type 'Nutzer'. Verify that it has not been explicitly excluded from the model and that it is a valid navigation property.

Gibt es dafür eine einfache Möglichkeit?
Oder muss ich mir dafür einen eigenen UserStore implementieren? Das erscheint mir recht aufwändig.

1.029 Beiträge seit 2010
vor 8 Jahren

Hi,

ohne mich näher damit beschäftigt zu haben - implementiert am Beispiel von Version 1?

Dann sollte dieser Artikel helfen:
http://www.codeproject.com/Articles/799571/ASP-NET-MVC-Extending-ASP-NET-Identity-Roles

LG

Thoxx Themenstarter:in
112 Beiträge seit 2008
vor 8 Jahren

Wie im Titel steht, nutze ich Identity Version 2. Entsprechend habe ich mich auch an die Artikel und Beispiele zu Identity 2.0 gehalten.
Den Artikel von deinem Link kenne ich, hilft mir aber bei meinem Problem nicht weiter bzw. hat damit eher nichts zu tun.

16.834 Beiträge seit 2008
vor 8 Jahren

Was hat denn Identity 2.0 ohne Claims und Login für einen Sinn?
Dann wäre es doch - im Prinzip - eine stink-normale Basic-Authentifizierung.

Diese also einfach so wegzulassen hätte ebenfalls keinen Sinn und ist meines Wissens nach auch nicht möglich.

Thoxx Themenstarter:in
112 Beiträge seit 2008
vor 8 Jahren

Da ich vorher mit ASP MVC bisher nur kleinere Sachen gemacht und noch keine Authentifizierung implementiert habe, habe ich nach ASP MVC Role Based Authentication gesucht.
Da bin ich als erstes (und auch immer wieder) auf das Identity Framework gestoßen.

Es lies sich schnell als NuGet Package einbinden und die Integration fande ich recht eingängig. Der Nutzer lässt sich leicht anpassen, PasswortResetTokens generieren, Validierungslogik für Nutzernamen und Passwörter anpassen, Nutzer Lockout, E-Mail Service anbinden und über den UserManager Mails verschicken.... ich war echt erstaunt wie einfach das alles einzubinden und zu benutzen ist und wie wenig Code man dafür braucht, weil es eben alles schon vorhanden ist. Genau die Sachen da, die ich brauche.

Nur brauche ich eben weder Claims, noch irgendwelche externen Logins (und soweit ich das vestanden habe, ist dafür das IdentityUserLogin da).
Jetzt nur deshalb kein Identity 2.0 benutzen? Das scheint mir doch etwas...übertrieben 😉

Bevor ich jetzt anfange größere Handstände zu machen, kann ich auch mit zwei leeren Tabellen auf der Datenbank leben. Ich wollte ja nur wissen, ob es sich auf einfache Weise vermeiden lässt. Wenn nicht, dann eben nicht 😉

16.834 Beiträge seit 2008
vor 8 Jahren

Also Identity 2.0 ist nicht wirklich verbreitet.
Gewöhnlich ist eine einfache Basic Auth, was ebenfalls Rollen-basiert sein kann; oder eben der am weitesten verbreitete Provider OAuth2.0, wobei dieser i.d.R. seltener als Host verwendet wird.

Wenn Du es einfach haben willst, dann nutze doch 2.0 in seiner Rohfassung und lass halt einfach die Tabellen leer.

742 Beiträge seit 2005
vor 8 Jahren

Du kannst einen eigenen IUserStore implementieren und dann nur die passenden Interfaces implementieren:

https://msdn.microsoft.com/en-us/library/dn613259%28v=vs.108%29.aspx

Thoxx Themenstarter:in
112 Beiträge seit 2008
vor 8 Jahren

Okay, das habe ich befürchtet. Danke für die Info.

Wenn Du es einfach haben willst, dann nutze doch 2.0 in seiner Rohfassung und lass halt einfach die Tabellen leer.

Eben, das meinte ich ja vorher auch schon. Deshalb werde ich das jetzt so lassen. Bevor ich mir da den Aufwand mit dem UserStore mache, lasse ich lieber die beiden Tabellen drin. 😉

Ansonsten gefällt mir das Identity 2.0 echt gut...