Де розташовані сторінки для входу та реєстрації у скелетному додатку AspNet Core?


138

У VS 2017 я створив новий веб-додаток ASP.NET Core. На другій сторінці майстра я вибрав веб-додаток, а для автентифікації вибрав "індивідуальні облікові записи користувачів".

Зараз я намагаюся знайти Сторінки, пов’язані з / Рахунок / Реєстрація та / Обліковий запис / Вхід .

_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>

Це все, здається, має сенс. Але я б очікував, що структура папки «Області» включає папки «Реєстрація» та «Вхід». Це не. Єдине, що я там знаходжу - _ViewStart.cshtml

Структура файлів областей

Я знаю, що код лісу працює, коли я запускаю проект, посилання Регістр вказує на "/ Ідентифікація / Обліковий запис / Реєстрація", а посилання "Вхід" вказує на "/ Ідентифікація / Обліковий запис / Вхід". Натиснувши на посилання Реєстрація, я отримую сторінку реєстрації, яка містить текст "Створити новий обліковий запис".

Але я не можу знайти текст "Створити новий обліковий запис" ніде в проекті.

Може хтось скаже мені, чого я пропускаю?

Відповіді:


143

Під час попереднього перегляду ядра asp.net було оголошено, що інтерфейс 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 & tabs = візуальна студія


117
Великі пальці для відповіді та великі пальці вниз для Microsoft. Який сенс приховувати код від розробників і надавати їм базовий інтерфейс, який вони використовують для Auth? Це так смішно. Давай Microsoft, ми хочемо вивчити код, вивчити його, розбити, виправити та розгорнути. Це дивно.
Теоман шипахі

4
чи є якась команда PM, щоб ми могли перенести всі файли посвідчень до локальних.
panky sharma

3
@pankysharma Я просто додав відповідь із командою для цього (на випадок, якщо хтось у майбутньому цього потребує).
Еліссон

3
Чи варто серйозно користуватися сторінками Razor? Немає жодного варіанту просто розмістити звичайні перегляди MVC?
за годинниковою стрілкоюq

Якщо хтось ще німий, як я ... Потрапив на мене довше, ніж слід, щоб зрозуміти, що Ви можете переглянути код Get / Post, клацнувши правою кнопкою миші файл і вибравши "Перейти на сторінку моделі"
взуття

59

Це можна зробити з програми Visual Studio, клацніть правою кнопкою миші на вашому проекті та виберіть Додати-> Новий риштування

Новий елемент лісу

Потім виберіть особу та натисніть кнопку Додати Виберіть особу

Тепер виберіть сторінки, які ви хочете змінити. Випадаючий клас контексту даних: і ваша область імен та контекст повинні бути попередньо заповнені для вас.

Виберіть Сторінки

Нарешті натисніть кнопку Додати. Якщо у вас вже є файли перезапису (тобто з шаблону), це попереджатиме про їх перезапис.


Це насправді працює. Однак мій код не складеться чисто після того, як я імпортував сторінку входу - сторінку, яку мені цікаво налаштувати. Рішення можна знайти тут: stackoverflow.com/questions/58277172 / ... .
Йоссі Геретц

Дякую за чудову відповідь Джон, будь-яка ідея, чому вимкнення класу User User (в кінці форми) вимкнено?
Хамза Ханзада

1
Спасибі це зробили роботу 👍
AhmadMM

З пам’яті клас користувача стає увімкнутим, коли ви створюєте контекстний клас даних (натисніть кнопку +)
Джон Рах

14

Клацніть правою кнопкою миші проект, виберіть Add -> New Scaffold Item, у діалоговому вікні виберіть Identity на лівій панелі.

введіть тут опис зображення

введіть тут опис зображення


Ви також можете створити ці сторінки за допомогою цієї команди:

dotnet aspnet-codegenerator identity -dc WebApplication1.Data.ApplicationDbContext

Переконайтеся, що ви замінили власну область імен + ім'я DbContext. Тут створюються сторінки:

введіть тут опис зображення


Якщо ви бачите цю проблему:

Функція "буквальне значення за замовчуванням" недоступна в C # 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" />

ПОМИЛКА: dotnet: Не вдалось поставити ліси. Не вдалося знайти файл проекту в папці
Diego Venâncio

@ DiegoVenâncio Ви замінили WebApplication1.Data.ApplicationDbContextправильну область імен та ім'я файлу?
Еліссон

2
Звичайно, попрацюйте після видалення цього останнього рядка: <PackageReference Include = "Microsoft.CodeAnalysis.CSharp.Workspaces" Version = "3.2.0-beta3-final" />
Дієго

1
Ви також можете це зробити за допомогою програми Visual Studio Solution Explorer stackoverflow.com/a/54995794/2073738
додатки для костюмів для хлопців

1
@DaImТому між dotnet і aspnet не повинно бути дефісів. Це повинно бути dotnet aspnet-codegenerator. Може, це питання?
Еліссон

6

"Якщо ви хочете, щоб увесь код посвідчення був у вашій програмі, щоб ви могли змінити його як завгодно, ви можете використовувати новий ешафот ідентифікатор, щоб додати код ідентифікації до вашої програми. Весь код лісового ідентифікатора створюється в папці області конкретної ідентичності, щоб він залишався чітко відокремленим від коду вашої програми. '

https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap/#identity

Це працює для мене досить приємно і просто.


1
Як змінити, щоб переглянути або відредагувати ідентифікаційний код на localhost
panky sharma

Я використовував це сьогодні в існуючому проекті, в якому я оновився до 2.2, з існуючим DbContext, і він спрацював приголомшливо, коли я сказав моєму існуючому контексту, що він успадковує від Identity!
jamheadart

1

Трохи запізнювався на вечірку, але після розчарувань з інтерфейсом Identity я відмовився від неї. Створюйте свої проекти без цього. Моя порада (при використанні 2.1 або 2.2) створити власний обліковий запис / керувати контролерами та mvc-сторінками. Буде необхідна деяка налагодження startup.cs. Також вимкніть опцію компіляції виду опублікування (тобто views.dll). Можливо, у мене немає набору параметрів, але компілятор повністю ігнорує будь-які зміни в блоках скриптів на рівні сторінки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.