AspNet Core 스캐 폴드 앱에서 로그인 및 등록 페이지는 어디에 있습니까?


139

VS 2017에서 새로운 ASP.NET Core 웹 애플리케이션을 만들었습니다. 마법사의 두 번째 페이지에서 웹 응용 프로그램을 선택하고 인증을 위해 "개별 사용자 계정"을 선택했습니다.

이제 / Account / Register 및 / Account / Login과 관련된 페이지를 찾으려고합니다 .

_Layout.cshtml은 클래식 MVC에서와 마찬가지로 _LoginPartial.cshtml을 가져옵니다.

<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 및 Login 폴더가 포함될 것으로 예상했을 것입니다. 그렇지 않습니다. 내가 찾은 유일한 것은 _ViewStart.cshtml입니다.

Areas 파일 구조

스캐 폴딩 된 코드가 작동한다는 것을 알고 있습니다. 프로젝트를 실행할 때 등록 링크는 "/ Identity / Account / Register"를 가리키고 로그인 링크는 "/ Identity / Account / Login"을 가리 킵니다. 등록 링크를 클릭하면 "새 계정 만들기"텍스트가 포함 된 등록 페이지가 나타납니다.

하지만 프로젝트의 어느 곳에서도 "새 계정 만들기"라는 텍스트를 찾을 수 없습니다.

누군가 내가 무엇을 놓치고 있는지 말해 줄 수 있습니까?

답변:


143

asp.net core 2.1 미리보기에서 Identity UI가 새로운 Razor 클래스 라이브러리로 이동 될 것이라고 발표되었습니다. https://blogs.msdn.microsoft.com/webdev/2018/03/02/aspnetcore-2-1-identity-ui/

로컬보기를 선호하는 경우 ID보기를 자체 프로젝트에 스캐 폴드 할 수 있습니다. https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-2.1 & tabs = visual-studio


117
대답에 대해 엄지 척을하고 Microsoft에 대해 엄지 척을합니다. 개발자에게 코드를 숨기고 인증에 사용할 기본 UI를 제공하는 이유는 무엇입니까? 너무 재밌 네요. Microsoft로 오세요. 우리는 코드를 살펴보고, 배우고, 깨고, 수정하고, 배포하고 싶습니다. 이것은 이상합니다.
Teoman shipahi

4
모든 ID 파일을 로컬로 가져올 수 있도록 PM 명령이 있습니까?
사람이에요 샤르마

3
@pankysharma 방금 그 작업을 수행하는 명령으로 답변을 추가했습니다 (미래에 누군가가 필요할 경우).
알리슨

3
Razor 페이지를 꼭 사용해야합니까? 단순히 일반 MVC보기를 스캐 폴드 할 수있는 옵션이 없습니까?
clockwiseq

다른 사람이 나와 같은 바보라면 ... 파일을 마우스 오른쪽 버튼으로 클릭하고 "페이지 모델로 이동"을 선택하여 Get / Post 코드를 볼 수 있다는 사실을 깨닫는 데 예상보다 오래
Shoe

59

Visual Studio 내에서이 작업을 수행하고 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가-> 새 스캐 폴드 항목을 선택합니다.

새로운 비계 아이템

그런 다음 ID를 선택하고 추가를 클릭하십시오. 신원 선택

이제 재정의 할 페이지를 선택합니다. 드롭 다운 데이터 컨텍스트 클래스 : 네임 스페이스와 컨텍스트가 미리 채워져 있어야합니다.

페이지 선택

마지막으로 추가를 클릭하십시오. 이미 존재하는 오버라이드 파일이있는 경우 (예 : 템플릿에서) 덮어 쓰기에 대해 경고합니다.


이것은 실제로 작동합니다. 그러나 사용자 지정에 관심이있는 페이지 인 로그인 페이지를 가져온 후에는 코드가 제대로 컴파일되지 않습니다. 솔루션은 다음에서 찾을 수 있습니다. stackoverflow.com/questions/58277172/… .
Yossi Geretz

훌륭한 답변에 감사드립니다 John, 사용자 클래스 드롭 다운 (양식 끝)이 비활성화 된 이유를 아십니까?
Hamza Khanzada

1
덕분에이 작업 👍 한
AhmadMM

메모리에서 사용자 클래스는 사용자가 데이터 컨텍스트 클래스를 생성하면 (+ 버튼을 클릭)를 활성화된다
존 라에게

14

프로젝트를 마우스 오른쪽 버튼으로 클릭 Add -> New Scaffold Item하고을 선택한 다음 대화 상자 의 왼쪽 창 에서 ID 를 선택 합니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력


다음 명령을 사용하여 이러한 페이지를 생성 할 수도 있습니다.

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

@ DiegoVenâncio WebApplication1.Data.ApplicationDbContext올바른 네임 스페이스와 파일 이름으로 바꾸 셨나요?
Alisson

2
과정, 마지막 줄을 제거한 후 작업 : <PackageReference Include = "Microsoft.CodeAnalysis.CSharp.Workspaces"Version = "3.2.0-
beta3

1
Visual Studio 솔루션 탐색기
Suit Boy Apps

1
@DaImTo dotnet과 aspnet 사이에 하이픈이 없어야합니다. 이어야합니다 dotnet aspnet-codegenerator. 이것이 문제일까요?
Alisson

6

애플리케이션에 모든 ID 코드를 포함하여 원하는대로 변경할 수 있도록하려면 새 ID 스캐 폴더를 사용하여 애플리케이션에 ID 코드를 추가 할 수 있습니다. 모든 스캐 폴딩 된 ID 코드는 ID 특정 영역 폴더에 생성되어 애플리케이션 코드와 잘 분리되어 있습니다. '

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

그것은 나를 위해 꽤 좋고 쉽게 작동합니다.


1
어떻게 로컬 호스트에보기 또는 편집 식별 코드로 변경
사람이에요 샤르마

저는 오늘 기존 DbContext를 사용하여 2.2로 업데이트 한 기존 프로젝트에서 이것을 사용했으며 기존 컨텍스트가 Identity에서 상속되고 있다고 말하면 멋지게 작동했습니다!
jamheadart

1

파티에 조금 늦었지만 아이덴티티 UI에 대한 불만으로 포기했습니다. 그것없이 프로젝트를 만드십시오. 내 조언은 (2.1 또는 2.2를 사용할 때) 자신의 계정 / 관리 컨트롤러 및 mvc 페이지를 만드는 것입니다. 일부 startup.cs 디버깅이 필요합니다. 게시보기 (예 : views.dll) 컴파일 옵션도 비활성화합니다. 옵션 세트가 없지만 컴파일러는 페이지 수준 스크립트 블록의 변경 사항을 완전히 무시합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.