Các trang Đăng nhập và Đăng ký ở đâu trong một ứng dụng giàn giáo AspNet Core?


137

Trong VS 2017, tôi đã tạo một Ứng dụng web ASP.NET Core mới. Trên trang thứ hai của trình hướng dẫn, tôi đã chọn Ứng dụng web và để Xác thực tôi đã chọn "Tài khoản người dùng cá nhân".

Bây giờ, tôi đang cố gắng tìm các Trang được liên kết với / Tài khoản / Đăng ký và / Tài khoản / Đăng nhập .

_Layout.cshtml mang đến _LoginPartial.cshtml, giống như đã làm trong MVC cổ điển:

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

Nếu người dùng chưa đăng nhập thì _LoginPartial bao gồm <a>các thẻ trỏ đến trang đăng nhập và đăng ký:

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

Đó là tất cả có ý nghĩa. Nhưng tôi đã dự kiến ​​cấu trúc thư mục Khu vực sẽ bao gồm các thư mục Đăng ký và Đăng nhập. Nó không. Điều duy nhất tôi tìm thấy ở đây là _ViewStart.cshtml

Cấu trúc tập tin khu vực

Tôi biết rằng mã được tạo ra hoạt động, Khi tôi chạy dự án, liên kết Đăng ký trỏ đến "/ Danh tính / Tài khoản / Đăng ký" và liên kết Đăng nhập trỏ đến "/ Danh tính / Tài khoản / Đăng nhập". Nhấp vào liên kết Đăng ký sẽ cho tôi một trang đăng ký bao gồm nội dung "Tạo tài khoản mới".

Nhưng tôi không thể tìm thấy văn bản "Tạo tài khoản mới" ở bất cứ đâu trong dự án.

Ai đó có thể cho tôi biết những gì tôi đang thiếu?

Câu trả lời:


141

Nó đã được công bố trong bản xem trước của asp.net core 2.1 rằng UI UI sẽ được chuyển sang Thư viện lớp dao cạo mới. https://bloss.msdn.microsoft.com/webdev/2018/03/02/aspnetcore-2-1-identity-ui/

Vẫn có thể đưa các Chế độ xem Danh tính vào dự án của riêng bạn nếu bạn thích các chế độ xem cục bộ: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-2.1 & tab = phòng thu hình ảnh


115
Thumbs up cho câu trả lời, và ngón tay cái xuống cho Microsoft. Điểm ẩn mã từ các nhà phát triển và cung cấp cho họ giao diện người dùng cơ bản để sử dụng cho Auth là gì? Điều đó thật vui. Hãy đến với Microsoft, chúng tôi muốn xem xét mã, tìm hiểu nó, phá vỡ nó, sửa chữa nó và triển khai nó. Này là số lẻ.
Teoman shipahi

4
Có bất kỳ lệnh PM nào để chúng tôi có thể nhận được tất cả các tệp nhận dạng thành cục bộ.
shank parma

3
@pankysharma Tôi vừa thêm một câu trả lời với một lệnh để làm điều đó (trong trường hợp bất kỳ ai trong tương lai cần nó).
Alisson

3
Chúng ta có nghiêm túc phải sử dụng các trang Dao cạo không? Không có tùy chọn nào chỉ đơn giản là dàn dựng các khung nhìn MVC thông thường?
clockwiseq

Nếu có ai khác bị câm như tôi ... Mất nhiều thời gian hơn tôi sẽ nhận ra rằng bạn có thể xem mã Nhận / Đăng bằng cách nhấp chuột phải vào tệp và chọn "Chuyển đến Mô hình Trang"
Giày

59

Bạn có thể thực hiện việc này từ bên trong Visual Studio, nhấp chuột phải vào Dự án của bạn và chọn Thêm-> Vật phẩm được giàn giáo mới

Vật phẩm mới

Sau đó chọn Danh tính và nhấp vào Thêm Chọn danh tính

Bây giờ chọn các trang bạn muốn ghi đè. Thả xuống lớp ngữ cảnh dữ liệu: và không gian tên và bối cảnh của bạn sẽ được điền sẵn cho bạn.

Chọn trang

Cuối cùng bấm vào Thêm. Nếu bạn đã có các tập tin ghi đè hiện có ở đó (tức là từ mẫu), điều này sẽ cảnh báo về việc ghi đè chúng.


Điều này trong thực tế làm việc. Tuy nhiên, mã của tôi sẽ không được biên dịch sạch sau khi tôi đã nhập trang Đăng nhập - trang tôi quan tâm để tùy chỉnh. Giải pháp có thể được tìm thấy ở đây: stackoverflow.com/questions/58277172/ .
Yossi Geretz

Cảm ơn bạn đã trả lời tuyệt vời John, Bạn có biết tại sao thả xuống Lớp người dùng (ở cuối biểu mẫu) bị vô hiệu hóa không?
Hamza Khanzada

1
Cảm ơn nó đã thực hiện công việc
AhmadMM

Từ bộ nhớ, Lớp người dùng sẽ được bật khi bạn tạo lớp ngữ cảnh Dữ liệu (nhấp vào nút +)
John Rah

14

Nhấp chuột phải vào dự án, chọn Add -> New Scaffold Item, trên hộp thoại chọn Danh tính trong khung bên trái.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


Bạn cũng có thể tạo các trang này bằng lệnh này:

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

Hãy chắc chắn rằng bạn thay thế bằng không gian tên của riêng bạn + tên DbContext. Các trang được tạo ở đây:

nhập mô tả hình ảnh ở đây


Nếu bạn thấy vấn đề này:

Tính năng 'nghĩa đen mặc định' không khả dụng trong C # 7.0. Vui lòng sử dụng ngôn ngữ phiên bản 7.1 trở lên.

Bạn có thể sửa nó bằng cách thêm nó vào .csprojvà xây dựng lại:

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

LRI: dotnet: Giàn giáo thất bại. Không thể tìm thấy tệp dự án trong thư mục
Diego Venâncio

@ DiegoVenâncio bạn đã thay thế WebApplication1.Data.ApplicationDbContextbằng không gian tên và tên tệp đúng chưa?
Alisson

2
Khóa học, hoạt động sau khi xóa dòng cuối cùng này: <GóiReference Bao gồm = "Microsoft.CodeAnalysis.CSharp.Workspaces" Version = "3.2.0-beta3-Final" />
Diego Venâncio

1
Bạn cũng có thể thực hiện việc này thông qua Visual Studio Solution Explorer stackoverflow.com/a/54995794/2073738
Ứng dụng Suit Boy

1
@DaImTo không nên có dấu gạch nối giữa dotnet và aspnet. Nó phải dotnet aspnet-codegenerator. Có lẽ đây là vấn đề?
Alisson

6

'Nếu bạn muốn tất cả mã nhận dạng có trong ứng dụng của mình để bạn có thể thay đổi mã theo cách bạn muốn, bạn có thể sử dụng trình nhận dạng nhận dạng mới để thêm mã nhận dạng vào ứng dụng của mình. Tất cả các mã nhận dạng được cung cấp được tạo trong một thư mục khu vực cụ thể để nó vẫn được tách biệt khỏi mã ứng dụng của bạn. '

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

Nó hoạt động khá tốt đẹp và dễ dàng cho tôi.


1
cách thay đổi để xem hoặc chỉnh sửa mã nhận dạng trên localhost
panky sharma

Tôi đã sử dụng điều này ngày hôm nay trong một dự án hiện tại mà tôi đã cập nhật lên 2.2, với DbContext hiện có và nó hoạt động rất tuyệt khi tôi nói với bối cảnh hiện tại của mình, nó được thừa hưởng từ Danh tính!
jamheadart

1

Ít đến bữa tiệc nhưng sau khi thất vọng với UI Nhận dạng, tôi đã từ bỏ nó. Tạo các dự án của bạn mà không có nó. Lời khuyên của tôi là (khi sử dụng 2.1 hoặc 2.2) hãy tạo tài khoản / quản lý bộ điều khiển và trang mvc của riêng bạn. Một số gỡ lỗi startup.cs sẽ là cần thiết. Đồng thời vô hiệu hóa tùy chọn biên dịch xuất bản (ví dụ view.dll). Có thể tôi không có tùy chọn được đặt nhưng trình biên dịch hoàn toàn bỏ qua mọi thay đổi trong khối tập lệnh cấp trang.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.