Forms 身份验证提供程序

Forms 身份验证通常是指以下系统:使用 HTTP 客户端重定向功能将未经验证的请求重定向到某个 HTML 表单。如果应用程序在通过 HTML 表单登录时需要搜集其自己的用户凭据,则 Forms 身份验证是一种很好的选择。用户提供凭据并提交该窗体。如果应用程序验证该请求,则系统发出一个包含凭据或密钥的 Cookie 以重新获取标识。随后的请求是使用请求标题中的 Cookie 来发布的。请求是由 ASP.NET 事件处理程序使用应用程序指定的验证方法来验证和授权的。

注意,Forms 身份验证通常用于自定义,即为已知用户自定义内容。在某些情况下,需要进行标识而无需进行身份验证,因此,只需要在持久的 Cookie 中存储用户名并使用该 Cookie 访问该用户的自定义信息就可以了。

有关如何开发使用 Forms 身份验证的 ASP.NET 应用程序的详细信息,请参阅 MSDN Library 中有关 Forms 身份验证提供程序的文档。

跨应用程序 Forms 身份验证

ASP.NET 在分布式环境中支持 Forms 身份验证,即跨单个服务器或 Web 场上的应用程序。对于参与共享 Forms 身份验证的所有应用程序,<forms> 元素配置节中的几个配置属性必须一致。对于不同的应用程序,以下示例中的指令 nameprotectionpathvalidationKeydecryptionKeyvalidation 必须相同(除非另有指定)。

<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 本身中的 Expires 属性值来跟踪 Cookie 是否到期。这意味着,如果两个应用程序具有不同的 timeout 属性,则在每个 Cookie 的生存期内,保留 Cookie 最初颁发时设置的到期日期和时间。在更新 Cookie 后,可使用该 Cookie 的原始到期时间来计算新的到期时间。仅在初始创建 Cookie 时,使用配置 timeout 值。



相关主题


© 1997-2003 Microsoft Corporation。保留所有权利