W VS 2017 utworzyłem nową aplikację internetową ASP.NET Core. Na drugiej stronie kreatora wybrałem aplikację internetową, a do uwierzytelnienia wybrałem „Indywidualne konta użytkowników”.
Teraz próbuję znaleźć strony powiązane z / Account / Register i / Account / Login .
_Layout.cshtml wprowadza _LoginPartial.cshtml, podobnie jak w klasycznym MVC:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a asp-page="/Index">Home</a></li>
<li><a asp-page="/About">About</a></li>
<li><a asp-page="/Contact">Contact</a></li>
</ul>
<partial name="_LoginPartial" />
</div>
Jeśli użytkownik nie jest zalogowany, _LoginPartial zawiera <a>
tagi wskazujące strony logowania i rejestracji:
<ul class="nav navbar-nav navbar-right">
<li><a asp-area="Identity" asp-page="/Account/Register">Register</a></li>
<li><a asp-area="Identity" asp-page="/Account/Login">Login</a></li>
</ul>
To wszystko wydaje się mieć sens. Ale spodziewałbym się, że struktura folderów Obszary będzie zawierać foldery Rejestracja i Logowanie. To nie. Jedyne, co tam znajduję, to _ViewStart.cshtml
Wiem, że kod rusztowania działa. Kiedy uruchamiam projekt, łącze Zarejestruj wskazuje na „/ Identity / Account / Register”, a link Login wskazuje na „/ Identity / Account / Login”. Kliknięcie linku Zarejestruj się powoduje wyświetlenie strony rejestracji zawierającej tekst „Utwórz nowe konto”.
Ale nie mogę znaleźć tekstu „Utwórz nowe konto” w żadnym miejscu w projekcie.
Czy ktoś może mi powiedzieć, czego mi brakuje?
źródło
Możesz to zrobić z poziomu programu Visual Studio, kliknij prawym przyciskiem myszy projekt i wybierz opcję Dodaj-> Nowy element szkieletowy
Następnie wybierz Tożsamość i kliknij Dodaj
Teraz wybierz strony, które chcesz zastąpić. Rozwijana klasa kontekstu danych: a przestrzeń nazw i kontekst powinny być wstępnie wypełnione.
Na koniec kliknij Dodaj. Jeśli masz już istniejące pliki nadpisań (np. Z szablonu), ostrzeże to o ich nadpisaniu.
źródło
Kliknij projekt prawym przyciskiem myszy, wybierz
Add -> New Scaffold Item
, w lewym panelu w oknie dialogowym wybierz Tożsamość .Możesz również wygenerować te strony za pomocą tego polecenia:
Upewnij się, że zastąpiłeś własną przestrzenią nazw + nazwę DbContext. Strony są generowane tutaj:
Jeśli widzisz ten problem:
Możesz to naprawić, dodając to do siebie
.csproj
i przebudowując:źródło
WebApplication1.Data.ApplicationDbContext
właściwą przestrzeń nazw i nazwę pliku?dotnet aspnet-codegenerator
. Może to jest problem?„Jeśli chcesz, aby cały kod identyfikacyjny znajdował się w Twojej aplikacji, aby móc go zmienić w dowolny sposób, możesz użyć nowego szkieletu tożsamości, aby dodać kod tożsamości do swojej aplikacji. Cały kod identyfikacyjny szkieletu jest generowany w folderze obszaru specyficznego dla tożsamości, dzięki czemu pozostaje ładnie oddzielony od kodu aplikacji ”.
https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap/#identity
Dla mnie działa całkiem przyjemnie i łatwo.
źródło
Trochę spóźniłem się na imprezę, ale po frustracji związanej z interfejsem tożsamości zrezygnowałem. Twórz projekty bez tego. Moja rada jest taka (w przypadku używania wersji 2.1 lub 2.2) stwórz własne konto / zarządzaj kontrolerami i stronami MVC. Konieczne będzie debugowanie pliku startup.cs. Wyłącz także opcję kompilacji widoku publikowania (tj. Views.dll). Może nie mam ustawionej opcji, ale kompilator całkowicie ignoruje wszelkie zmiany w blokach skryptów na poziomie strony.
źródło