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

时间:2018-06-11 17:01:27

标签: asp.net-core asp.net-identity razor-pages

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

现在,我试图找到与/帐户/注册和/帐户/登录相关联的页面。

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

如果用户未登录,则_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 file structure

我知道脚手架代码有效,当我运行项目时,Register链接指向&#34; / Identity / Account / Register&#34;并且登录链接指向&#34; / Identity / Account / Login&#34;。点击“注册”链接可以获得一个注册页面,其中包含文本&#34;创建一个新帐户&#34;。

但我找不到文字&#34;创建一个新帐户&#34;在项目的任何地方。

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

6 个答案:

答案 0 :(得分:47)

在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&tabs=visual-studio

答案 1 :(得分:24)

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

New Scaffolded Item

然后选择“身份”,然后单击“添加” Select Identity

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

Select Pages

最后单击添加。如果您已经有覆盖文件(例如,模板中的文件),则会警告您覆盖它们。

答案 2 :(得分:6)

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

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

确保使用您自己的名称空间+ DbContext名称替换。页面在这里生成:

enter image description here


如果您遇到此问题:

  

功能“默认文字”在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" />

答案 3 :(得分:0)

'如果您希望所有身份代码都包含在您的应用程序中,以便可以随意更改它,则可以使用新的身份支架将身份代码添加到您的应用程序中。所有脚手架的身份代码都在特定于身份的区域文件夹中生成,以便与您的应用程序代码保持良好的分隔。'

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

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

答案 4 :(得分:0)

只是想补充。如果您正在寻找这些页面的底层类,只需打开相关页面文件夹。例如,对于 Register 类,打开 Register.cshmtl 以查找底层的 Register.cshmtl.cs 文件。请参阅以下内容: enter image description here

答案 5 :(得分:-1)

聚会晚了一点,但是在对Identity UI感到沮丧之后,我放弃了。没有它创建您的项目。我的建议是(使用2.1或2.2时)创建自己的帐户/管理控制器和mvc页面。某些startup.cs调试将是必需的。同时禁用发布视图(即views.dll)编译选项。也许我没有设置选项,但是编译器完全忽略了页面级脚本块中的任何更改。