FormsAuthentication是否已过时?[关闭]


46

我正在使用ASP.NET MVC 5创建一个网站。Microsoft是否发布了替代FormsAuthentication的任何技术,或者他们仍然建议使用FormsAuthentication for MVC 5对用户进行身份验证?


3
定义“确定”和“过时”,并解释“不喜欢”。
罗伯特·哈维

24
为什么这个问题不公开!OP正在询问FormsAuthentication在MVC 5中是否已过时,是否有另一种技术来代替它。这不是基于意见的问题,例如“您对在MVC 5中使用FormsAuthentication有什么看法”。
Tony_Henrich,2015年

3
@Tony_Henrich,是的,我不明白为什么要关闭它。幸运的是,罗文在结案之前提供了一个有用的答案。部分基于他的回答,我仍然在MVC5项目中使用FormsAuthentication。
sean717

3
我不明白为什么关闭了它?这个问题不是交换堆栈的目的,而不是在stackoverflow中问这种问题吗?
contactmatt

3
我不明白为什么这个问题被关闭了?我的项目正在从具有表单身份验证的ASP.NET 4.0 Web表单迁移到ASP.NET 4.5 MVC5,并且我正在研究使用当前代码的最佳方法。请不要让StackExchange比Wikipedia恶化。
JoshYates1980 '17

Answers:


50

是。在MVC 5及更高版本中不推荐使用FormsAuthentication。

至少,这是简短的答案。

长答案是,MVC 5之前的传统FormsAuthentication仍然可以使用。但是,正在逐步淘汰它,而使用诸如ASP.NET Identity之类的替代方法。

在Visual Studio 2013中,为和MVC 5应用程序提供的身份验证选项如下:

VS2013身份验证选项

在这种情况下,“ 单个用户帐户”指的是ASP.NET标识

根据Microsoft的说法,以前的ASP.NET成员资格已由ASP.NET身份取代,

[...]示例应用程序将配置为使用ASP.NET身份(以前称为ASP.NET成员身份

(强调我的)

微软也声明

新的成员资格系统基于OWIN而不是ASP.NET Forms Authentication模块。

因此,Identity并没有完全取代FormsAuthentication,而是取代了使用FormsAuthentication的Membership系统。这也是一件好事,因为根据我在2013年提出的一个问题,会员资格相当混乱

但是,仍然存在一种FormsAuthentication根据微软的说法

ASP.NET还通过FormsAuthenticationModule提供了表单身份验证支持,但是,该表单只能支持ASP.NET上托管的应用程序,而没有声明支持。这是一个粗略的功能比较列表: 功能比较

因此,如果您仍想使用FormsAuthentication,请查看了解MVC 5中的OWIN Forms身份验证

因此,Microsoft 鼓励您使用ASP.NET Identity。当然,您不必。您只需选择“ 无身份验证”,该项目将不会为您实现任何功能。然后由您来满足您的会员资格/登录需求


5
OP和此答案均未提及自定义表单身份验证。在我的应用程序中,我不需要并且不使用内置的成员资格控件和SQL Server表,而是使用我的代码和用户表对用户进行身份验证。然后,在通过身份验证后,我将使用FormsAuthentication创建并设置auth cookie。我不使用ASP.NET Identity,但希望它也支持这种情况。
Tony_Henrich,2015年

@Tony_Henrich,“使用我的代码和用户表对用户进行身份验证。然后,对身份进行身份验证后,我使用FormsAuthentication来创建和设置身份验证cookie”这正是我最终要做的。我真的不喜欢ASP.NET成员资格控件及其SQL Server表。对于“ ASP.NET成员资格”系统,我知道它绝对已过时,应该停止使用(因为实际上实际上是很多年前)
sean717

一个使用MVC5和自定义表单身份验证的优秀开源项目: github.com/YodasMyDad/mvcforum
JoshYates1980
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.