[asp.net-core] AspNet Core 스캐 폴드 앱에서 로그인 및 등록 페이지는 어디에 있습니까?

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”을 가리 킵니다. 등록 링크를 클릭하면 “새 계정 만들기”텍스트가 포함 된 등록 페이지가 나타납니다.

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

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



답변

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


답변

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

새로운 비계 아이템

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

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

페이지 선택

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


답변

프로젝트를 마우스 오른쪽 버튼으로 클릭 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" />


답변

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

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

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


답변

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


답변