AspNet Core scaffolded uygulamasında Oturum Açma ve Kayıt sayfaları nerede?


139

VS 2017'de yeni bir ASP.NET Core Web Uygulaması oluşturdum. Sihirbazın ikinci sayfasında Web Uygulamasını ve Kimlik Doğrulama için "Bireysel Kullanıcı Hesapları" nı seçtim.

Şimdi, / Account / Register ve / Account / Login ile ilişkili Sayfaları bulmaya çalışıyorum .

_Layout.cshtml, klasik MVC'de olduğu gibi _LoginPartial.cshtml'yi getirir:

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

Kullanıcı oturum açmadıysa, _LoginPartial <a>oturum açma ve kayıt sayfalarına işaret eden etiketleri içerir :

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

Hepsi mantıklı görünüyor. Ancak, Alanlar klasör yapısının Kayıt ve Giriş klasörlerini içermesini beklerdim. O değil. Orada bulduğum tek şey _ViewStart.cshtml

Alanlar dosya yapısı

İskeleli kodun çalıştığını biliyorum, Projeyi çalıştırdığımda, Kayıt bağlantısı "/ Kimlik / Hesap / Kayıt" ve Oturum açma bağlantısı "/ Kimlik / Hesap / Giriş" i işaret ediyor. Kaydol bağlantısına tıklamak bana "Yeni bir hesap oluştur" metnini içeren bir kayıt sayfası açar.

Ancak projenin hiçbir yerinde "Yeni bir hesap oluştur" metnini bulamıyorum.

Biri bana neyi kaçırdığımı söyleyebilir mi?

Yanıtlar:


143

Asp.net core 2.1'in önizlemesi sırasında Identity UI'nin yeni bir Razor Sınıf Kitaplığına taşınacağı duyuruldu. https://blogs.msdn.microsoft.com/webdev/2018/03/02/aspnetcore-2-1-identity-ui/

Yerel görünümleri tercih ederseniz, Kimlik Görünümlerini kendi projenize yerleştirmek hala mümkündür: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-2.1 sekme = görsel-stüdyosu ve


117
Cevap için başparmak yukarı ve Microsoft için beğenmiyorum. Geliştiricilerden kodu gizlemenin ve onlara Auth için kullanmaları için temel bir kullanıcı arayüzü vermenin amacı nedir? Bu çok komik. Hadi Microsoft, koda bakmak, öğrenmek, kırmak, düzeltmek ve dağıtmak istiyoruz. Bu garip.
Teoman shipahi

4
tüm kimlik dosyalarını yerel olarak alabilmemiz için herhangi bir PM komutu var mı?
panky sharma

3
@pankysharma Bunu yapmak için bir komut içeren bir cevap ekledim (gelecekte herhangi birinin ihtiyacı olması durumunda).
Alisson

3
Razor sayfalarını ciddi şekilde kullanmak zorunda mıyız? Normal MVC görünümlerini iskele haline getirme seçeneği yok mu?
saat

Başka biri benim gibi aptalsa ... Dosyayı sağ tıklayıp "Sayfa Modeline Git" i seçerek Al / Gönder kodunu görüntüleyebileceğinizi fark etmem gerektiğinden çok daha uzun sürdü
Ayakkabı

59

Bunu Visual Studio içinden yapabilirsiniz, Projenize sağ tıklayın ve Ekle-> Yeni İskeleli Öğe'yi seçin.

Yeni İskeleli Ürün

Ardından Kimlik'i seçin ve Ekle'ye tıklayın Kimlik Seçin

Şimdi geçersiz kılmak istediğiniz sayfaları seçin. Açılır Veri Bağlamı Sınıfı: ve Ad Alanınız ve Bağlamınız sizin için önceden doldurulmalıdır.

Sayfaları Seçin

Son olarak Ekle'ye tıklayın. Orada zaten var olan geçersiz kılma dosyalarınız varsa (yani şablondan), bu onların üzerine yazılması konusunda uyarı verecektir.


Bu aslında işe yarıyor. Ancak, giriş sayfasını - özelleştirmek istediğim sayfayı içeri aktardıktan sonra kodum temiz bir şekilde derlenmiyordu. Çözüm şurada bulunabilir: stackoverflow.com/questions/58277172/… .
Yossi Geretz

Harika yanıt için teşekkürler John, Kullanıcı Sınıfı Açılır Menüsünün (formun sonunda) neden devre dışı bırakıldığına dair bir fikriniz var mı?
Hamza Khanzada

1
Teşekkürler işi yaptı 👍
AhmadMM

Bellekten, bir Veri bağlam sınıfı oluşturduğunuzda (+ düğmesini tıklayın) Kullanıcı Sınıfı etkinleştirilir
John Rah

14

Projeye sağ tıklayın Add -> New Scaffold Item, iletişim kutusunda sol bölmede Kimlik öğesini seçin .

görüntü açıklamasını buraya girin

görüntü açıklamasını buraya girin


Bu sayfaları şu komutu kullanarak da oluşturabilirsiniz:

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

Kendi ad alanınız + DbContext adınız ile değiştirdiğinizden emin olun. Sayfalar burada oluşturulur:

görüntü açıklamasını buraya girin


Bu sorunu görüyorsanız:

'Varsayılan değişmez' özelliği C # 7.0'da mevcut değildir. Lütfen 7.1 veya daha üst dil sürümünü kullanın.

Bunu size ekleyerek .csprojve yeniden oluşturarak düzeltebilirsiniz :

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

HATA: dotnet: İskele başarısız oldu. Klasörde proje dosyası bulunamadı
Diego Venâncio

@ DiegoVenâncio WebApplication1.Data.ApplicationDbContext, doğru ad alanı ve dosya adıyla değiştirdiniz mi?
Alisson

2
Kurs, bu son satırı kaldırdıktan sonra çalışın: <PackageReference Include = "Microsoft.CodeAnalysis.CSharp.Workspaces" Version = "3.2.0-beta3-final" />
Diego Venâncio

1
Bunu Visual Studio Solution Explorer stackoverflow.com/a/54995794/2073738
Suit Boy Apps

1
@DaImTo dotnet ve aspnet arasında tire olmamalıdır. Olmalı dotnet aspnet-codegenerator. Belki sorun budur?
Alisson

6

İstediğiniz gibi değiştirebilmeniz için tüm kimlik kodunun uygulamanızda olmasını istiyorsanız, kimlik kodunu uygulamanıza eklemek için yeni kimlik iskelesini kullanabilirsiniz. Tüm yapı iskelesi kimlik kodu, kimliğe özgü bir alan klasöründe oluşturulur, böylece uygulama kodunuzdan güzel bir şekilde ayrı kalır. '

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

Benim için oldukça hoş ve kolay çalışıyor.


1
localhost'ta kimlik kodunu görüntülemek veya düzenlemek için nasıl değiştirilir
panky sharma

Bugün bunu, mevcut DbContext ile 2.2'ye güncellediğim mevcut bir projede kullandım ve mevcut bağlamıma Identity'den miras aldığını söylediğimde harika çalıştı!
jamheadart

1

Partiye biraz geç kaldım ama Identity UI ile ilgili hayal kırıklıklarından sonra bundan vazgeçtim. Projelerinizi onsuz oluşturun. Benim tavsiyem (2.1 veya 2.2 kullanırken) kendi hesabınızı oluşturun / denetleyicileri ve mvc sayfalarını yönetin. Bazı startup.cs hata ayıklamaları gerekli olacaktır. Ayrıca yayınlama görünümü (yani views.dll) derleme seçeneğini de devre dışı bırakın. Belki bir seçenek setim yok ama derleyici sayfa seviyesi betik bloklarındaki değişiklikleri tamamen yok sayıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.