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

Posted

技术标签:

【中文标题】AspNet Core 脚手架应用程序中的登录和注册页面在哪里?【英文标题】:Where are the Login and Register pages in an AspNet Core scaffolded app? 【发布时间】:2021-11-01 07:35:03 【问题描述】:

在 VS 2017 中,我创建了一个新的 ASP.NET Core 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>

如果用户未登录,则 _LoginPartial 包含指向登录和注册页面的 &lt;a&gt; 标签:

<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

我知道脚手架代码有效。当我运行项目时,Register 链接指向“/Identity/Account/Register”,而 Login 链接指向“/Identity/Account/Login”。单击“注册”链接会得到一个注册页面,其中包含“创建新帐户”文本。

但我在项目的任何地方都找不到“创建新帐户”的文字。

谁能告诉我我错过了什么?

【问题讨论】:

【参考方案1】:

在 asp.net core 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

【讨论】:

为答案点赞,为微软点赞。向开发人员隐藏代码并为他们提供用于身份验证的基本 UI 有什么意义?那太有趣了。加油微软,我们想研究代码、学习它、破解它、修复它并部署它。这很奇怪。 是否有任何 PM 命令,以便我们可以将所有身份文件获取到本地。 @pankysharma 我刚刚添加了一个带有命令的答案(以防将来有人需要它)。 我们真的必须使用 Razor 页面吗?是否没有选择简单地为常规 MVC 视图搭建基架? 如果其他人像我一样愚蠢...我花了更长的时间才意识到您可以通过右键单击文件并选择“转到页面模型”来查看获取/发布代码【参考方案2】:

您可以在 Visual Studio 中执行此操作, 右键单击您的项目并选择 Add->New Scaffolded Item

然后选择身份并点击添加

现在选择您要覆盖的页面。下拉Data Context Class:,你的命名空间和上下文应该已经为你预先填写好了。

最后点击添加。如果您那里已经存在覆盖文件(即来自模板),则会警告覆盖它们。

【讨论】:

这确实有效。但是,在我导入登录页面(我有兴趣定制的页面)后,我的代码无法完全编译。可以在这里找到解决方案:***.com/questions/58277172/…. 感谢约翰的精彩回答,知道为什么禁用用户类下拉菜单(在表单末尾)吗? 感谢它完成了这项工作? 从内存中,一旦您创建了数据上下文类,用户类就会启用(单击 + 按钮) 最佳答案在这里。【参考方案3】:

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


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

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:脚手架失败。在文件夹中找不到项目文件 当然,删除最后一行后工作: 你也可以通过 Visual Studio 解决方案资源管理器***.com/a/54995794/2073738 @DaImTo dotnet 和 aspnet 之间不应有连字符。应该是dotnet aspnet-codegenerator。也许这就是问题所在? 如果没有安装aspnet-codegenerator,运行:dotnet tool install -g dotnet-aspnet-codegenerator。无论如何,aspnet-codegenerator 对我不起作用,这是因为this open issue。【参考方案4】:

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

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

它对我来说非常好用且简单。

【讨论】:

如何更改以查看或编辑本地主机上的身份代码 我今天在一个现有项目中使用了它,在该项目中我更新到 2.2,使用现有的 DbContext,一旦我告诉我现有的上下文它是从 Identity 继承的,它就非常棒!【参考方案5】:

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

【讨论】:

【参考方案6】:

只是想补充。如果您正在寻找这些页面的底层类,只需打开相关的页面文件夹即可。例如,对于 Register 类,打开 Register.cshmtl 以查找底层 Register.cshmtl.cs 文件。请看下面:

【讨论】:

以上是关于AspNet Core 脚手架应用程序中的登录和注册页面在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

AspNet Identity Core - 登录时的自定义声明

AspNet Core MVC项目接入的登录页验证码

使用 OpenIdConnect 时未填充 .Net Core Identity 用户

无论用户登录如何,如何保护 Angular / .NET Core 2.0 应用程序中的所有 api 调用

.net core中使用efcore

通过ajax前端后台交互/登录页和注册页前端后台交互详解/前端后台交互基础应用/几个后台函数的基础应用/php文件函数基础应用/php字符传函数基础应用/php数组函数基础应用