ASP.NET Web API 中的表单身份验证
作者:Mike Wasson
表单身份验证使用 HTML 表单将用户的凭据发送到服务器。 它不是互联网标准。 表单身份验证仅适用于从 Web 应用程序调用的 Web API,以便用户可以与 HTML 表单交互。
优点 | 缺点 |
---|---|
|
|
简而言之,ASP.NET 中的表单身份验证的工作原理如下:
- 客户端请求需要身份验证的资源。
- 如果用户未通过身份验证,服务器将返回 HTTP 302 (找到) 并重定向到登录页。
- 用户输入凭据并提交表单。
- 服务器返回另一个重定向回原始 URI 的 HTTP 302。 此响应包括身份验证 Cookie。
- 客户端再次请求资源。 请求包括身份验证 Cookie,因此服务器会授予请求。
有关详细信息,请参阅 表单身份验证概述。
将表单身份验证与 Web API 配合使用
若要创建使用表单身份验证的应用程序,请在 MVC 4 项目向导中选择“Internet 应用程序”模板。 此模板创建用于帐户管理的 MVC 控制器。 还可以使用 ASP.NET 2012 年秋季更新中提供的“单页应用程序”模板。
在 Web API 控制器中,可以使用 属性来限制访问 [Authorize]
,如 使用 [Authorize] 属性中所述。
Forms-authentication 使用会话 Cookie 对请求进行身份验证。 浏览器会自动将所有相关 Cookie 发送到目标网站。 此功能使表单身份验证可能容易受到跨站点请求伪造 (CSRF) 攻击,请参阅 防止跨站点请求伪造 (CSRF) 攻击。
表单身份验证不会加密用户的凭据。 因此,表单身份验证不安全,除非与 SSL 一起使用。 请参阅 在 Web API 中使用 SSL。