หน้าเข้าสู่ระบบและลงทะเบียนในแอพนั่งร้าน AspNet Core อยู่ที่ไหน


140

ใน VS 2017 ฉันได้สร้าง ASP.NET Core Web Application ใหม่ ในหน้าที่สองของวิซาร์ดฉันเลือก Web Application และสำหรับการตรวจสอบสิทธิ์ฉันเลือก "บัญชีผู้ใช้ส่วนบุคคล"

ตอนนี้ฉันกำลังพยายามค้นหาหน้าที่เกี่ยวข้องกับ / บัญชี / ลงทะเบียนและ / บัญชี / เข้าสู่ระบบ/

_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 and Login มันไม่ใช่. สิ่งเดียวที่ฉันพบคือ _ViewStart.cshtml

โครงสร้างไฟล์พื้นที่

ฉันรู้ว่ารหัสนั่งร้านใช้งานได้เมื่อฉันเรียกใช้โครงการลิงก์ลงทะเบียนจะชี้ไปที่ "/ ข้อมูลประจำตัว / บัญชี / ลงทะเบียน" และลิงก์เข้าสู่ระบบจะชี้ไปที่ "/ ข้อมูลประจำตัว / บัญชี / เข้าสู่ระบบ" การคลิกลิงก์ลงทะเบียนทำให้ฉันได้รับหน้าการลงทะเบียนที่มีข้อความ "สร้างบัญชีใหม่"

แต่ฉันไม่พบข้อความ "สร้างบัญชีใหม่" ในโครงการ

ใครช่วยบอกทีว่าฉันขาดอะไรไป

คำตอบ:


143

มีการประกาศในระหว่างการแสดงตัวอย่างของ asp.net core 2.1 ว่า Identity UI จะถูกย้ายไปยัง Razor Class Library ใหม่ 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 และแท็บ = ภาพสตูดิโอ


117
ยกนิ้วให้สำหรับคำตอบและยกนิ้วให้ Microsoft อะไรคือจุดซ่อนโค้ดจากนักพัฒนาและมอบ UI พื้นฐานให้พวกเขาใช้สำหรับ Auth มันตลกมาก มาที่ Microsoft เราอยากตรวจสอบโค้ดเรียนรู้ทำลายมันแก้ไขและปรับใช้ นี่เป็นเรื่องแปลก
Teoman shipahi

4
มีคำสั่ง PM หรือไม่เพื่อให้เราสามารถรับไฟล์ข้อมูลประจำตัวทั้งหมดไปยังโลคัลได้
panky sharma

3
@pankysharma ฉันเพิ่งเพิ่มคำตอบพร้อมคำสั่งสำหรับการทำเช่นนั้น (เผื่อว่าจะมีใครต้องการในอนาคต)
Alisson

3
เราต้องใช้ Razor pages อย่างจริงจังหรือไม่? ไม่มีตัวเลือกในการนั่งร้านมุมมอง MVC ปกติหรือไม่?
clockwiseq

ถ้าคนอื่นโง่เหมือนฉัน ... เอาฉันมานานกว่าที่ควรจะรู้ว่าคุณสามารถดูรหัสรับ / โพสต์ได้โดยคลิกขวาที่ไฟล์แล้วเลือก "Go To Page Model"
Shoe

59

คุณสามารถทำได้จากภายใน Visual Studio คลิกขวาที่โครงการของคุณแล้วเลือก Add-> New Scaffolded Item

รายการนั่งร้านใหม่

จากนั้นเลือก Identity และคลิกที่ Add เลือก Identity

ตอนนี้เลือกหน้าที่คุณต้องการแทนที่ ดร็อปดาวน์คลาสบริบทข้อมูล:และเนมสเปซและบริบทของคุณควรถูกกรอกไว้ล่วงหน้าสำหรับคุณ

เลือกเพจ

สุดท้ายคลิกที่เพิ่ม หากคุณมีไฟล์ลบล้างอยู่แล้ว (เช่นจากเทมเพลต) สิ่งนี้จะเตือนเกี่ยวกับการเขียนทับไฟล์เหล่านั้น


สิ่งนี้ได้ผลจริง อย่างไรก็ตามรหัสของฉันจะไม่รวบรวมอย่างสมบูรณ์หลังจากที่ฉันนำเข้าหน้าเข้าสู่ระบบ - หน้าที่ฉันสนใจในการปรับแต่ง สามารถดูวิธีแก้ปัญหาได้ที่นี่: stackoverflow.com/questions/58277172/… .
Yossi Geretz

ขอบคุณสำหรับคำตอบที่ยอดเยี่ยม John มีความคิดว่าทำไม User Class Dropdown (ที่ส่วนท้ายของแบบฟอร์ม) จึงถูกปิดใช้งาน
Hamza Khanzada

1
ขอบคุณที่ทำงานได้👍
AhmadMM

จากหน่วยความจำคลาสผู้ใช้จะเปิดใช้งานเมื่อคุณสร้างคลาสบริบทข้อมูล (คลิกปุ่ม +)
John Rah

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ด้วยเนมสเปซและชื่อไฟล์ที่ถูกต้องหรือไม่?
Alisson

2
หลักสูตรใช้งานได้หลังจากลบบรรทัดสุดท้ายนี้: <PackageReference Include = "Microsoft.CodeAnalysis.CSharp.Workspaces" Version = "3.2.0-beta3-final" />
Diego Venâncio

1
คุณสามารถทำได้ผ่าน Visual Studio Solution Explorer stackoverflow.com/a/54995794/2073738
Suit Boy Apps

1
@DaImTo ไม่ควรมียัติภังค์ระหว่างดอทเน็ตและแอสเน็ต dotnet aspnet-codegeneratorมันควรจะเป็น อาจจะเป็นปัญหานี้?
Alisson

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

ไปปาร์ตี้ช้าไปหน่อย แต่หลังจากผิดหวังกับ UI ของ Identity ฉันก็ยอมแพ้ สร้างโครงการของคุณโดยไม่ต้องใช้มัน คำแนะนำของฉันคือ (เมื่อใช้ 2.1 หรือ 2.2) สร้างบัญชีของคุณเอง / จัดการคอนโทรลเลอร์และหน้า mvc จำเป็นต้องมีการดีบัก startup.cs บางอย่าง ปิดใช้งานตัวเลือกการรวบรวมมุมมองการเผยแพร่ (เช่น views.dll) ด้วย บางทีฉันอาจไม่มีชุดตัวเลือก แต่คอมไพลเลอร์ไม่สนใจการเปลี่ยนแปลงใด ๆ ในบล็อกสคริปต์ระดับหน้า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.