Где находятся страницы входа и регистрации в ядре AspNet Core?
В VS 2017 я создал новое веб-приложение ASP.NET Core. На второй странице мастера я выбрал веб-приложение, а для проверки подлинности я выбрал "Индивидуальные учетные записи пользователей".
Теперь я пытаюсь найти Страницы, связанные с /Account/Register и /Account/Login.
_Layout.cshtml добавляет _LoginPartial.cshtml, как и в классическом 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>
Если пользователь не подписан, то _LoginPartial включает теги <a>
которые указывают на страницы входа и регистрации:
<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>
Это все имеет смысл. Но я ожидал, что структура папок Areas будет включать папки Register и Login. Это не. Единственное, что я нахожу, это _ViewStart.cshtml
Я знаю, что работает защищенный код. Когда я запускаю проект, ссылка Register указывает на "/Identity/Account/Register", а ссылка "Войти" указывает на "/Identity/Account/Login". Нажав на ссылку "Регистрация", вы получите страницу регистрации, содержащую текст "Создать новую учетную запись".
Но я не могу найти текст "Создать новую учетную запись" в любом месте проекта.
Может ли кто-нибудь сказать мне, что мне не хватает?
Ответы
Ответ 1
Во время предварительного просмотра asp.net core 2.1 было объявлено, что пользовательский интерфейс Identity будет перенесен в новую библиотеку классов Razor. https://blogs.msdn.microsoft.com/webdev/2018/03/02/aspnetcore-2-1-identity-ui/
По-прежнему можно подкрасить идентификационные представления в свой собственный проект, если вы предпочитаете локальные виды: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-2.1 и язычки = зрительно-студия
Ответ 2
"Если вы хотите, чтобы весь идентификационный код находился в вашем приложении, чтобы вы могли изменить его так, как вы хотите, вы можете использовать новый каркас идентификации для добавления идентификационного кода в ваше приложение. Весь идентификационный код скаффолдинга создается в папке области, идентифицирующей личность, так что он остается хорошо отделенным от кода вашего приложения. '
https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap/#identity
Это работает довольно хорошо и легко для меня.
Ответ 3
Вы можете создать эти страницы с помощью этой команды:
dotnet aspnet-codegenerator identity -dc WebApplication1.Data.ApplicationDbContext
Убедитесь, что вы заменили свое собственное пространство имен + имя DbContext. Страницы создаются здесь:
Если вы видите эту проблему:
Функция "литерал по умолчанию" недоступна в С# 7.0. Пожалуйста, используйте языковая версия 7.1 или выше.
Вы можете исправить это, добавив это к себе .csproj
и перестроив:
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="3.2.0-beta3-final" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.2.0-beta3-final" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.2.0-beta3-final" />
Ответ 4
Вы можете сделать это из Visual Studio,
Щелкните правой кнопкой мыши по вашему проекту и выберите Add-> Новый элемент лесов
Затем выберите Identity и нажмите Add
Теперь выберите страницы, которые вы хотите переопределить. Выпадающий класс контекста данных: и ваше пространство имен и контекст должны быть предварительно заполнены для вас.
Наконец нажмите на кнопку Добавить. Если у вас уже есть файлы переопределения (т.е. из шаблона), это предупредит об их перезаписи.
Ответ 5
ASP.NET Core 2.1 с Identity автоматически включает в себя "Default UI". Это библиотека классов Razor Pages, которая ссылается через AddDefaultIdentity в Startup, которая под капотом буквально вызывает
Если вам нужны фактические файлы в вашем проекте, вам нужно их подкрасить. Щелкните правой кнопкой мыши свой проект в проводнике решений и выберите "Добавить"> "Новый элемент леса"... Затем нажмите "Идентификатор" слева, а затем кнопку "Добавить", Появится новое окно, позволяющее вам выбирать страницы, которые вы хотите включить, свой контекст и т.д. Настройте его так, как вам нравится, и
Также стоит отметить, что до тех пор, пока вы используете AddDefaultIdentity, пользовательский интерфейс по умолчанию все еще включен, а это значит, что вам действительно не нужны все файлы подкладок, если вы хотите их использовать. Они будут по существу функционировать как переопределения. Все, что конкретно включено в ваш проект, будет использоваться, а все, что отсутствует, будет выведено из пользовательского интерфейса по умолчанию.
Это также означает, что если вы хотите сделать что-то вроде стандартных действий и представлений контроллера вместо Razor Pages, пользовательский интерфейс по умолчанию будет по-прежнему активным и будет иметь приоритет. Вы должны использовать AddIdentity или AddIdentityCore вместо AddDefaultIdentity, если вы хотите, чтобы пользовательский интерфейс по умолчанию полностью отключился.
От
Ответ 6
Немного опоздал на вечеринку, но после разочарования интерфейсом Identity я отказался от него. Создайте свои проекты без него. Мой совет (при использовании 2.1 или 2.2) создать свою учетную запись/управлять контроллерами и страницами MVC. Некоторые отладки startup.cs будут необходимы. Также отключите опцию компиляции представления публикации (т.е. views.dll). Возможно, у меня нет набора опций, но компилятор полностью игнорирует любые изменения в блоках сценария уровня страницы.
Ответ 7
В дополнение к ответам, приведенным выше, я нашел следующую статью, объясняющую, как переопределить пользовательский интерфейс Identity от Microsoft: https://kenhaggerty.com/articles/article/aspnet-core-22-scaffold-identity-ui
Надеюсь это поможет.