Widziałem wiele podobnych stron w sieci, ale większość z nich korzysta z nowego projektu zamiast istniejącego lub nie ma niezbędnych funkcji. Mam więc istniejący MVC 5
projekt i chcę zintegrować tożsamość ASP.NET MVC5 z funkcjami logowania, potwierdzania wiadomości e-mail i resetowania hasła .
Oprócz tego potrzebuję również stworzyć wszystkie niezbędne tabele w bazie danych tj. User, Roles, groups, etc. (używam EF Code First w moim projekcie). Czy istnieje artykuł lub próbka, która odpowiada tym potrzebom? Wszelkie sugestie będą mile widziane. Z góry dziękuję...
Odpowiedzi:
Skonfigurowanie tożsamości do istniejącego projektu nie jest trudne. Musisz zainstalować pakiet NuGet i wykonać niewielką konfigurację.
Najpierw zainstaluj te pakiety NuGet za pomocą konsoli Menedżera pakietów:
Dodaj klasę użytkownika i
IdentityUser
dziedziczenie:Zrób to samo dla roli:
Zmień
DbContext
rodzica zDbContext
naIdentityDbContext<AppUser>
taki:Jeśli używasz tych samych parametrów połączenia i włączonej migracji, program EF utworzy dla Ciebie niezbędne tabele.
Opcjonalnie możesz rozszerzyć,
UserManager
aby dodać żądaną konfigurację i dostosowanie:Ponieważ tożsamość jest oparta na OWIN, musisz również skonfigurować OWIN:
Dodaj zajęcia do
App_Start
folderu (lub w dowolnym innym miejscu, jeśli chcesz). Ta klasa jest używana przez OWIN. To będzie Twoja klasa startowa.Prawie gotowe, po prostu dodaj tę linię kodu do
web.config
pliku, aby OWIN mógł znaleźć twoją klasę startową.Teraz w całym projekcie możesz używać Identity tak, jak każdego nowego projektu, który został już zainstalowany przez VS. Rozważmy na przykład akcję logowania
Możesz tworzyć role i dodawać do użytkowników:
Możesz również dodać rolę do użytkownika, na przykład:
Używając
Authorize
możesz chronić swoje akcje lub kontrolery:lub
Możesz także zainstalować dodatkowe pakiety i skonfigurować je tak, aby spełniały Twoje wymagania, takie jak
Microsoft.Owin.Security.Facebook
lub cokolwiek chcesz.Uwaga: nie zapomnij dodać odpowiednich przestrzeni nazw do swoich plików:
Możesz także zobaczyć moje inne odpowiedzi, takie jak ta i ta, dotyczące zaawansowanego wykorzystania tożsamości.
źródło
AppRole
Do klasyfikacji użytkownika użyłem i menedżera ról tożsamości. A ponieważRole
s iRoleManager
zostały już zaimplementowane przez samą tożsamość, nie musisz przepisywać już zaimplementowanego kodu. Zaktualizuję wpis, aby pokazać, jak możesz używać ról. Jak powiedziałem wcześniej, wystarczy dodaćAppUser
iAppRole
jednostki, aby zainicjować tożsamość. Dziedzicząc swojąDbContext
zeIdentityDbContext<AppUser>
wszystkich niezbędnych tabel, dodaj swoją tabelę. Nie musisz nic robić, wystarczy włączyć migrację.Microsoft.AspNet.Identity.EntityFramework
w swojej domenie i innych dla interfejsu użytkownika.web.config
. Nie wymieniaj starego. Przeczytaj to, aby uzyskać więcej informacji . Myślę, że twój MVC również został ulepszony.AspNetRoles
AspNetUserClaims
AspNetUserLogins
AspNetUserRoles
iAspNetUsers
Oto, co zrobiłem, aby zintegrować Identity z istniejącą bazą danych.
Utwórz przykładowy projekt MVC za pomocą szablonu MVC. Zawiera cały kod potrzebny do implementacji tożsamości - Startup.Auth.cs, IdentityConfig.cs, kod kontrolera konta, zarządzanie kontrolerem, modele i powiązane widoki.
Zainstaluj niezbędne pakiety NuGet dla tożsamości i OWIN. Pojawi się pomysł, widząc odniesienia w przykładowym projekcie i odpowiedź od @Sam
Skopiuj cały ten kod do istniejącego projektu. Pamiętaj, nie zapomnij dodać parametrów połączenia „DefaultConnection”, aby tożsamość była mapowana do Twojej bazy danych. Sprawdź klasę ApplicationDBContext w IdentityModel.cs, w której znajdziesz odniesienie do parametrów połączenia „DefaultConnection”.
Oto skrypt SQL, który uruchomiłem w mojej istniejącej bazie danych, aby utworzyć niezbędne tabele:
Sprawdź i rozwiąż wszystkie pozostałe błędy i gotowe. Tożsamość zajmie się resztą :)
źródło
Polecam IdentityServer. To jest .NET Foundation projekt i obejmuje wiele zagadnień związanych z uwierzytelnianiem i autoryzacją.
Przegląd
IdentityServer to platforma oparta na platformie .NET / Katana i hostowany składnik, który umożliwia wdrażanie pojedynczego logowania i kontroli dostępu do nowoczesnych aplikacji internetowych i interfejsów API przy użyciu protokołów, takich jak OpenID Connect i OAuth2. Obsługuje szeroką gamę klientów, takich jak aplikacje mobilne, internetowe, SPA i aplikacje desktopowe, i jest rozszerzalny, aby umożliwić integrację z nowymi i istniejącymi architekturami.
Aby uzyskać więcej informacji, np
sprawdź dokumentację i demo .
źródło