【问题标题】:MVC based authentication templates in ASP.NET Core 2.0ASP.NET Core 2.0 中基于 MVC 的身份验证模板
【发布时间】:2019-08-09 22:30:05
【问题描述】:

在 ASP.Net Core 2.0 中创建新的 ASP.Net Core Web 项目并选择“个人帐户”身份验证选项时,最初使用 ASP.Net MVC 实现的身份验证视图/控制器。最近,它们似乎已更新为使用 Razor 页面。我的问题是......有没有一种方法可以将新项目模板恢复为使用 MVC 而不是 Razor 页面,或者至少有一种方法可以让我看到 MVC 模板用于创建的代码?

【问题讨论】:

    标签: asp.net-core


    【解决方案1】:

    简单地说,不。 Identity 现在带有一个包含默认 UI 的 Razor 类库,正如您所指出的,它是基于 Razor Pages 的。如果您想要旧式 MVC 设置,您需要自己创建它。您可以将默认 UI 页面搭建到您的项目中,然后参考这些页面将代码移动到控制器/视图中。然后,当您完成此操作后,删除项目中的默认 UI 页面,并使用 AddIdentity<TUser, TRole> 而不是 AddDefaultIdentity<TUser>(在后台添加默认 UI)来关闭默认 UI。

    FWIW,我曾经完全反对 Razor Pages,直到我尝试与您即将开始的相同的事情。将所有代码移入控制器后,我开始记得它实际上是多么的混乱。身份验证涉及大量样板代码:登录、注销、注册、密码重置、2FA、第三方登录等。您最终会得到具有数百甚至数千行代码的怪物控制器。即使您尝试将其分解为许多不同的控制器,这也会使情况变得更糟。总而言之,Razor Pages 实际上非常适合这样的事情。它使每个功能单元都保持独立,因此您可以准确地知道需要去哪里进行编辑。我建议您先按原样试一试,然后看看它对您有什么作用。

    另外,您主要关心的问题之一可能是使用 Razor 页面进行路由的 Web 表单样式,其中您的路径变成了 URL,如果您像我一样,这可能会冒犯您的感受。这实际上可以更改,尽管它根本没有很好的记录。您可以使用@page 指令简单地指定您希望页面具有的任何路由。例如,您可以在Login.cshtml 中执行以下操作:

    @page "/signin"
    

    然后,您可以通过/signin 而不是/Identity/Account/Login.cshtml 访问该页面。

    【讨论】:

    • 谢谢,这真的很有帮助。我想我的下一个问题是,假设我仍然很想获得基于 mvc 的原始模板的源代码,我在哪里可以获得这些?
    • 我不确定它是否存在。它是 Visual Studio 中项目支架的一部分,我认为它不是开源的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 2018-09-06
    • 2015-05-16
    • 2018-06-23
    相关资源
    最近更新 更多