Di mana halaman Masuk dan Daftar di aplikasi scaffolded AspNet Core?


139

Di VS 2017, saya membuat Aplikasi Web ASP.NET Core baru. Di halaman kedua wizard, saya memilih Aplikasi Web, dan untuk Otentikasi saya memilih "Akun Pengguna Individual".

Sekarang, saya mencoba mencari Halaman yang terkait dengan / Akun / Daftar dan / Akun / Login .

_Layout.cshtml menghadirkan _LoginP Partial.cshtml, seperti yang terjadi di MVC klasik:

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

Jika pengguna tidak masuk maka _LoginP Partial menyertakan <a>tag yang mengarah ke halaman masuk dan daftar:

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

Itu semua sepertinya masuk akal. Tapi saya berharap struktur folder Area menyertakan folder Register dan Login. Itu tidak. Satu-satunya hal yang saya temukan di sana adalah _ViewStart.cshtml

Struktur file area

Saya tahu bahwa kode perancah berfungsi, Ketika saya menjalankan proyek, tautan Daftar mengarah ke "/ Identitas / Akun / Daftar" dan tautan Masuk mengarah ke "/ Identitas / Akun / Masuk". Mengklik pada link Register memberi saya halaman pendaftaran yang menyertakan teks "Buat akun baru".

Tetapi saya tidak dapat menemukan teks "Buat akun baru" di mana pun dalam proyek ini.

Bisakah seseorang memberi tahu saya apa yang saya lewatkan?

Jawaban:


143

Diumumkan selama pratinjau asp.net core 2.1 bahwa UI Identitas akan dipindahkan ke Perpustakaan Kelas Razor yang baru. https://blogs.msdn.microsoft.com/webdev/2018/03/02/aspnetcore-2-1-identity-ui/

Masih mungkin untuk melakukan scaffold Tampilan Identitas ke dalam proyek Anda sendiri jika Anda lebih suka tampilan lokal: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-2.1 & tab = studio visual


117
Jempol untuk jawabannya, dan jempol ke bawah untuk Microsoft. Apa gunanya menyembunyikan kode dari pengembang, dan memberi mereka UI dasar yang akan digunakan untuk Auth? Lucu sekali. Ayo Microsoft, kami ingin melihat kode, mempelajarinya, memecahkannya, memperbaikinya, dan menerapkannya. Ini aneh.
Teoman shipahi

4
apakah ada perintah PM sehingga kami bisa mendapatkan semua file identitas ke lokal.
panky sharma

3
@pankysharma Saya baru saja menambahkan jawaban dengan perintah untuk melakukan itu (jika ada orang di masa depan yang membutuhkannya).
Alisson

3
Apakah kami benar-benar harus menggunakan halaman Razor? Apakah tidak ada pilihan untuk hanya men-scaffold tampilan MVC biasa?
searah jarum

Jika ada orang lain yang bodoh seperti saya ... Butuh waktu lebih lama dari seharusnya untuk menyadari bahwa Anda dapat melihat Get / Post code dengan mengklik kanan file dan memilih "Go To Page Model"
Sepatu

59

Anda dapat melakukan ini dari dalam Visual Studio, Klik kanan pada Proyek Anda dan pilih Add-> New Scaffolded Item

Item Scaffolded Baru

Kemudian pilih Identity dan klik Add Pilih Identity

Sekarang pilih halaman yang ingin Anda timpa. Drop-down Data Context Class: dan Namespace dan Context Anda harus diisi sebelumnya untuk Anda.

Pilih Halaman

Terakhir klik Add. Jika Anda sudah ada override file di sana (yaitu dari template) ini akan memperingatkan tentang menimpanya.


Ini sebenarnya berhasil. Namun, kode saya tidak dapat dikompilasi dengan bersih setelah saya mengimpor halaman Login - halaman yang ingin saya sesuaikan. Solusinya dapat ditemukan di sini: stackoverflow.com/questions/58277172/… .
Yossi Geretz

Terima kasih atas jawaban yang bagus John, Ada ide mengapa Dropdown Kelas Pengguna (di akhir formulir) dinonaktifkan?
Hamza Khanzada

1
Terima kasih berhasil 👍
AhmadMM

Dari memori, Kelas Pengguna menjadi diaktifkan setelah Anda membuat kelas konteks Data (klik tombol +)
John Rah

14

Klik kanan pada proyek, pilih Add -> New Scaffold Item, pada dialog pilih Identity di panel kiri.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini


Anda juga dapat membuat halaman ini menggunakan perintah ini:

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

Pastikan Anda mengganti dengan namespace + nama DbContext Anda sendiri. Halaman-halaman dibuat di sini:

masukkan deskripsi gambar di sini


Jika Anda melihat masalah ini:

Fitur 'literal default' tidak tersedia di C # 7.0. Harap gunakan versi bahasa 7.1 atau lebih tinggi.

Anda mungkin dapat memperbaikinya dengan menambahkan ini kepada Anda .csprojdan membangunnya kembali:

<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" />

EROR: dotnet: Scaffolding gagal. Tidak dapat menemukan file proyek dalam folder
Diego Venâncio

@ DiegoVenâncio apakah Anda mengganti WebApplication1.Data.ApplicationDbContextdengan namespace dan nama file yang benar?
Alisson

2
Tentu saja, bekerja setelah menghapus baris terakhir ini: <PackageReference Include = "Microsoft.CodeAnalysis.CSharp.Workspaces" Version = "3.2.0-beta3-final" />
Diego Venâncio

1
Anda juga dapat melakukan ini melalui Visual Studio Solution Explorer stackoverflow.com/a/54995794/2073738
Suit Boy Apps

1
@DaImTo tidak boleh ada tanda hubung antara dotnet dan aspnet. Seharusnya begitu dotnet aspnet-codegenerator. Mungkin ini masalahnya?
Alisson

6

'Jika Anda ingin semua kode identitas ada dalam aplikasi Anda sehingga Anda dapat mengubahnya sesuka Anda, Anda dapat menggunakan scaffolder identitas baru untuk menambahkan kode identitas ke aplikasi Anda. Semua kode identitas perancah dibuat dalam folder area spesifik identitas sehingga tetap terpisah dengan baik dari kode aplikasi Anda. '

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

Ini bekerja cukup bagus dan mudah bagi saya.


1
cara mengubah untuk melihat atau mengedit kode identitas di localhost
panky sharma

Saya telah menggunakan ini hari ini dalam proyek yang ada di mana saya memperbarui ke 2.2, dengan DbContext yang ada dan bekerja luar biasa setelah saya memberi tahu konteks saya yang ada itu diwarisi dari Identity!
jamheadart

1

Sedikit terlambat ke pesta tetapi setelah frustrasi dengan Identity UI, saya menyerah. Buat proyek Anda tanpa itu. Saran saya adalah (saat menggunakan 2.1 atau 2.2) buat akun Anda sendiri / kelola pengontrol dan halaman mvc. Beberapa proses debug startup.cs akan diperlukan. Juga nonaktifkan opsi kompilasi tampilan terbitkan (yaitu views.dll). Mungkin saya tidak memiliki set opsi tetapi kompilator sepenuhnya mengabaikan perubahan apa pun dalam blok skrip tingkat halaman.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.