Forms 身份验证通常是指以下系统:使用 HTTP 客户端重定向功能将未经验证的请求重定向到某个 HTML 表单。如果应用程序在通过 HTML 表单登录时需要搜集其自己的用户凭据,则 Forms 身份验证是一种很好的选择。用户提供凭据并提交该窗体。如果应用程序验证该请求,则系统发出一个包含凭据或密钥的 Cookie 以重新获取标识。随后的请求是使用请求标题中的 Cookie 来发布的。请求是由 ASP.NET 事件处理程序使用应用程序指定的验证方法来验证和授权的。
注意,Forms 身份验证通常用于自定义,即为已知用户自定义内容。在某些情况下,需要进行标识而无需进行身份验证,因此,只需要在持久的 Cookie 中存储用户名并使用该 Cookie 访问该用户的自定义信息就可以了。
有关如何开发使用 Forms 身份验证的 ASP.NET 应用程序的详细信息,请参阅 MSDN Library 中有关 Forms 身份验证提供程序的文档。
ASP.NET 在分布式环境中支持 Forms 身份验证,即跨单个服务器或 Web 场上的应用程序。对于参与共享 Forms 身份验证的所有应用程序,<forms> 元素配置节中的几个配置属性必须一致。对于不同的应用程序,以下示例中的指令 name
、protection
、path
、validationKey
、decryptionKey
和 validation
必须相同(除非另有指定)。
<configuration>
<system.web>
<authentication>
<forms name=".ASPXAUTH"
loginUrl="logon.aspx"
protection="all" <!-- Protection must be identical.-->
timeout="30"
path="/" > <!-- Path must have a compatible scope.-->
</authentication>
<!-- 验证和解密密钥必须完全一致,并且不能
设置为 "AutoGenerate"。验证算法也必须是
相同的。-->
<machineKey>
validationKey= "C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
decryptionKey= "8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
validation="SHA1"
isolateApplications="false"
</machineKey>
</system.web>
</configuration>
用于 Cookie 数据的加密、验证密钥和加密方案必须完全相同。如果设置不匹配,则无法共享 Cookie。
系统发出一个 Cookie 后,会基于 Cookie 本身中的