AspNet Core脚手架应用中的登录和注册页面在哪里?

Bob*_*lth 80 asp.net-identity asp.net-core razor-pages

在VS 2017中,我创建了一个新的ASP.NET核心Web应用程序.在向导的第二页上,我选择了Web应用程序,对于身份验证,我选择了"个人用户帐户".

现在,我正在尝试找到与/ Account/Register和/ Account/Login相关联的页面.

_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>
Run Code Online (Sandbox Code Playgroud)

如果用户未登录,则_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>
Run Code Online (Sandbox Code Playgroud)

这一切似乎都有道理.但我希望Areas文件夹结构包含Register和Login文件夹.它不是.我发现的唯一的东西是_ViewStart.cshtml

区域文件结构

我知道脚手架代码有效,当我运行项目时,Register链接指向"/ Identity/Account/Register",Login链接指向"/ Identity/Account/Login".点击注册链接可以获得一个注册页面,其中包含"创建新帐户"文本.

但我无法在项目的任何地方找到"创建新帐户"文本.

有人能告诉我我错过了什么吗?

Joe*_*tte 83

在asp.net核心2.1的预览期间宣布,Identity UI将被移动到新的Razor类库. 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 &选项卡=视觉工作室

  • 竖起大拇指为答案,并为微软竖起大拇指.从开发人员隐藏代码并为他们提供用于Auth的基本UI有什么意义?那太有趣了.来吧微软,我们想看看代码,学习它,打破它,修复它,然后部署它.这很奇怪. (59认同)
  • 我们真的必须使用 Razor 页面吗?是否没有选择简单地构建常规 MVC 视图? (4认同)
  • 是否有任何PM命令,以便我们可以将所有标识文件都保存到本地。 (3认同)
  • @pankysharma 我刚刚添加了一个答案,其中包含执行此操作的命令(以防将来有人需要它)。 (3认同)
  • 我非常同意@Teomanshipahi,我花了一整天的时间试图解决这个混乱,所有这些都是因为一些代码被隐藏了,你永远不确定到底发生了什么。 (2认同)

Ali*_*son 34

右键单击该项目,选择Add -> New Scaffold Item,在对话框的左侧窗格中选择Identity

在此处输入图片说明

在此处输入图片说明


您还可以使用以下命令生成这些页面:

dotnet aspnet-codegenerator identity -dc WebApplication1.Data.ApplicationDbContext
Run Code Online (Sandbox Code Playgroud)

确保替换为您自己的命名空间 + 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" />
Run Code Online (Sandbox Code Playgroud)

  • 当然,删除最后一行后即可工作: &lt;PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.2.0-beta3-final" /&gt; (2认同)

小智 16

您可以在Visual Studio中执行此操作,右键单击您的项目,然后选择“添加”->“新脚手架”

新脚手架

然后选择身份并单击添加 选择身份

现在,选择要覆盖的页面。下拉数据上下文类:并且应该为您预先填写名称空间和上下文。

选择页面

最后单击添加。如果那里已经有覆盖文件(即从模板),这将警告您覆盖它们。

  • 谢谢它完成了这项工作 (2认同)
  • 最佳答案在这里。 (2认同)

小智 5

“如果您希望所有身份代码都包含在您的应用程序中,以便可以根据需要进行更改,则可以使用新的身份支架将身份代码添加到您的应用程序中。所有脚手架的身份代码都是在特定于身份的区域文件夹中生成的,因此可以很好地与您的应用程序代码分开。

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

它对我来说非常好用而且容易。