Asp.net core ASP.NET Core 2.0中基于MVC的身份验证模板

Asp.net core ASP.NET Core 2.0中基于MVC的身份验证模板,asp.net-core,Asp.net Core,在ASP.Net Core 2.0中创建新的ASP.Net Core web项目并选择“个人帐户”身份验证选项时,身份验证视图/控制器最初使用ASP.Net MVC实现。最近,他们似乎已经更新使用剃须刀页面。我的问题是…有没有一种方法可以将新的项目模板还原为使用MVC而不是Razor页面,或者至少有一种方法可以看到MVC模板用于创建什么代码 简单地说,没有。Identity现在附带了一个Razor类库,其中包含一个默认UI,正如您所注意到的,它是基于Razor页面的。如果您想要老式的MVC设置,

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

简单地说,没有。Identity现在附带了一个Razor类库,其中包含一个默认UI,正如您所注意到的,它是基于Razor页面的。如果您想要老式的MVC设置,您需要自己创建它。您可以将默认UI页面构建到项目中,然后引用这些页面将代码移动到控制器/视图中。然后,在完成此操作后,删除项目中的默认UI页面,并通过使用
AddIdentity
而不是
AddDefaultIdentity
(在引擎盖下添加默认UI)来关闭默认UI

FWIW,我曾经完全反对剃须刀页面,直到我努力做你要做的事情。在将所有代码移到控制器中之后,我开始记得它实际上是多么混乱。身份验证涉及到太多的样板代码:登录、注销、注册、密码重置、2FA、第三方登录等等。最终,你会遇到具有数百行甚至数千行代码的可怕控制器。即使你试着把它分解成许多不同的控制器,那只会让事情变得更糟。长和短,剃须刀页面实际上非常适合这样的东西。它使每一个功能单元都是独立的,因此您可以准确地知道需要在哪里编辑内容。首先,我鼓励你尝试一下,看看它是如何为你工作的

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

@page "/signin"

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

简单地说,不需要。Identity现在附带了一个Razor类库,其中包含一个默认UI,正如您所注意的,它是基于Razor页面的。如果您想要老式的MVC设置,您需要自己创建它。您可以将默认UI页面构建到项目中,然后引用这些页面将代码移动到控制器/视图中。然后,在完成此操作后,删除项目中的默认UI页面,并通过使用
AddIdentity
而不是
AddDefaultIdentity
(在引擎盖下添加默认UI)来关闭默认UI

FWIW,我曾经完全反对剃须刀页面,直到我努力做你要做的事情。在将所有代码移到控制器中之后,我开始记得它实际上是多么混乱。身份验证涉及到太多的样板代码:登录、注销、注册、密码重置、2FA、第三方登录等等。最终,你会遇到具有数百行甚至数千行代码的可怕控制器。即使你试着把它分解成许多不同的控制器,那只会让事情变得更糟。长和短,剃须刀页面实际上非常适合这样的东西。它使每一个功能单元都是独立的,因此您可以准确地知道需要在哪里编辑内容。首先,我鼓励你尝试一下,看看它是如何为你工作的

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

@page "/signin"

然后,您可以通过
/signin
,而不是
/Identity/Account/Login.cshtml

访问该页面。谢谢,这非常有用。我想我的下一个问题是,假设我仍然真的想得到原始的基于mvc的模板的源代码,我在哪里可以得到这些?我不确定它是否存在。这是VisualStudio中脚手架项目的一部分,我认为它不是开源的。谢谢,这真的很有帮助。我想我的下一个问题是,假设我仍然真的想得到原始的基于mvc的模板的源代码,我在哪里可以得到这些?我不确定它是否存在。它是VisualStudio中脚手架项目的一部分,我认为它不是开源的。