Asp.net mvc 3 ASP.NET MVC 3目前的Web用户挑战?

Asp.net mvc 3 ASP.NET MVC 3目前的Web用户挑战?,asp.net-mvc-3,iis,authentication,iis-7,httpmodule,Asp.net Mvc 3,Iis,Authentication,Iis 7,Httpmodule,在ASP.NET Webforms时代,我有一个HTTP模块,它提供了一个401挑战,以获取用户名/密码、身份验证并继续前进。我使用了SSL上的基本身份验证,以兼容许多不同的浏览器,并使用一个中央数据库存储来检查凭据 有了最新的MVC,我正在寻找一种方法来做同样的事情。这样做的正确/现代方法是什么?Forms Auth是当今唯一的方法吗?我真的需要向用户展示熟悉的“登录框” 谢谢 Forms Auth是当今唯一的方法吗 表单身份验证只是一种身份验证方法。您还可以使用集成的Windows身份验证、

在ASP.NET Webforms时代,我有一个HTTP模块,它提供了一个401挑战,以获取用户名/密码、身份验证并继续前进。我使用了SSL上的基本身份验证,以兼容许多不同的浏览器,并使用一个中央数据库存储来检查凭据

有了最新的MVC,我正在寻找一种方法来做同样的事情。这样做的正确/现代方法是什么?Forms Auth是当今唯一的方法吗?我真的需要向用户展示熟悉的“登录框”

谢谢

Forms Auth是当今唯一的方法吗

表单身份验证只是一种身份验证方法。您还可以使用集成的Windows身份验证、basic、digest、OpenID或其他方案。但是,无论您使用的是哪种类型的身份验证,在ASP.NET MVC中,您都会使用属性来修饰控制器/操作(需要身份验证)。或者,如果需要更多控制,可以编写一个从标准身份验证属性派生的自定义身份验证属性

Forms Auth是当今唯一的方法吗


表单身份验证只是一种身份验证方法。您还可以使用集成的Windows身份验证、basic、digest、OpenID或其他方案。但是,无论您使用的是哪种类型的身份验证,在ASP.NET MVC中,您都会使用属性来修饰控制器/操作(需要身份验证)。或者,如果您需要更多的控制,您可以编写一个从标准身份验证属性派生的自定义身份验证属性。

如果您仍然希望使用该模块,您可能需要注意,在MVC中,基于URL的授权很难,因为许多URL和更改使得URL访问变得棘手。RESTful URL可以经常更改,并且多个URL(ok URI)可以映射到同一位置。正如Darin所指出的,在MVC中,重要的是在控制器类或方法上使用[Authorize]。这里的想法是,无论使用什么URI来访问当前资源,您都知道权限是正确的

处理该属性时,将检查用户角色成员身份,如果没有,则重定向到所需的任何登录url(假设例如forms auth),但身份验证提供商可以将其配置为在用户未经授权的情况下执行“任何操作”。在windows身份验证的情况下,您将收到登录对话框的提示,这将通过401质询完成,这就是为什么我说您可能仍然可以使用您的方法


这里以Windows auth为例:

如果您仍然希望使用该模块,您可能需要注意的是,在MVC中基于URL的授权是很困难的,因为许多URL和更改使得URL访问变得棘手。RESTful URL可以经常更改,并且多个URL(ok URI)可以映射到同一位置。正如Darin所指出的,在MVC中,重要的是在控制器类或方法上使用[Authorize]。这里的想法是,无论使用什么URI来访问当前资源,您都知道权限是正确的

处理该属性时,将检查用户角色成员身份,如果没有,则重定向到所需的任何登录url(假设例如forms auth),但身份验证提供商可以将其配置为在用户未经授权的情况下执行“任何操作”。在windows身份验证的情况下,您将收到登录对话框的提示,这将通过401质询完成,这就是为什么我说您可能仍然可以使用您的方法


这里以Windows身份验证为例:

@Snowy HTTP Basic auth是通过HTTP模块实现的。正如Darin在回答中提到的,MVC在其他方案中支持这一点。我知道我以前做过基本的身份验证。我现在想做基本的身份验证。我以前已经为Basic和Digest手动推出了HTTP模块,但现在我需要再次使用Basic(以检查针对数据库的身份验证)。我没有看到使用MVC进行基本身份验证的任何资源。帮助?@Snowy HTTP Basic Auth是您通过HTTP模块实现的。正如Darin在回答中提到的,MVC在其他方案中支持这一点。我知道我以前做过基本的身份验证。我现在想做基本的身份验证。我以前已经为Basic和Digest手动推出了HTTP模块,但现在我需要再次使用Basic(以检查针对数据库的身份验证)。我没有看到使用MVC进行基本身份验证的任何资源。帮助?找到完美的东西:找到完美的东西: