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입니다.
스캐 폴딩 된 코드가 작동한다는 것을 알고 있습니다. 프로젝트를 실행할 때 등록 링크는 “/ 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 내에서이 작업을 수행하고 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가-> 새 스캐 폴드 항목을 선택합니다.
이제 재정의 할 페이지를 선택합니다. 드롭 다운 데이터 컨텍스트 클래스 : 네임 스페이스와 컨텍스트가 미리 채워져 있어야합니다.
마지막으로 추가를 클릭하십시오. 이미 존재하는 오버라이드 파일이있는 경우 (예 : 템플릿에서) 덮어 쓰기에 대해 경고합니다.
답변
프로젝트를 마우스 오른쪽 버튼으로 클릭 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) 컴파일 옵션도 비활성화합니다. 옵션 세트가 없지만 컴파일러는 페이지 수준 스크립트 블록의 변경 사항을 완전히 무시합니다.