【问题标题】:VS 2017 ASP.NET Core Web Application and Individual User Accounts works but pages are non-existentVS 2017 ASP.NET Core Web 应用程序和个人用户帐户有效,但页面不存在
【发布时间】:2018-12-15 04:33:58
【问题描述】:

当我使用“ASP.NET Core Web 应用程序”/“Web 应用程序”(非 MVC)/“个人用户帐户”创建 Web 项目时......我得到了带有注册和登录按钮的示例项目,显示了他们的当我点击它们时相应的页面。但是......非常奇怪的是,如果我在注册页面上搜索“创建一个新帐户”,它没有找到......还有更多......身份区域或任何地方都没有 AccountController......所以1)这些页面不在我的解决方案文件夹中的任何位置,2)这些页面到底是如何显示的?!?我现在在两台不同的电脑上试过。 (使用 Core 2.1)

作为示例,此链接有效:

<a asp-area="Identity" asp-page="/Account/Login">Login</a>

然后带我去:

https://localhost:44300/Identity/Account/Login

然而我的文件夹结构(在解决方案和磁盘上)看起来像这样:

【问题讨论】:

标签: authentication asp.net-core visual-studio-2017


【解决方案1】:

带有 Identity 的 ASP.NET Core 2.1 自动包含“默认 UI”。这是一个 Razor Pages 类库,在 Startup 中通过 AddDefaultIdentity 引用,实际上它实际上调用了 AddDefaultUI

如果您想要项目中的实际文件,则需要将它们添加到脚手架中。在解决方案资源管理器中右键单击您的项目并选择添加 > 新建脚手架项...然后,单击左侧的身份列表,然后添加按钮。将弹出一个新窗口,允许您选择要包含的页面、上下文等。按照您喜欢的方式进行配置。

同样值得注意的是,只要你使用AddDefaultIdentity,默认的 UI 仍然包含在内,这意味着你实际上并不需要所有的脚手架文件,如果你想要其中任何一个.它们本质上将用作替代。将使用您项目中特别包含的任何内容,而缺少的任何内容都将从默认 UI 中提取。

这也意味着,如果您想要执行诸如使用标准控制器操作和视图而不是 Razor 页面之类的操作,则默认 UI 仍然处于活动状态,并具有优先权。如果您希望完全关闭默认 UI,则必须使用 AddIdentityAddIdentityCore 而不是 AddDefaultIdentity

【讨论】:

    【解决方案2】:

    ASP.NET Core 2.1 引入了Razor UI in class libraries。它的 UI 标识在 nuget package 中。

    这样做的好处是您现在可以将 UI 与您的库一起打包,然后公开 UI 以进行覆盖。

    post 描述了如何覆盖 UI。本质上,您将要覆盖到项目中的页面添加到 /Areas/Identity/Pages.... 目前最简单的方法是运行 scaffolder for identityvisual walkthrough

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 2021-03-09
      • 2021-07-23
      • 2018-02-08
      • 2019-04-26
      • 1970-01-01
      相关资源
      最近更新 更多