ASP.NET Forms身份验证概述
表单身份验证允许您使用自己的代码对用户进行身份验证,然后在cookie或页面URL中维护身份验证令牌。表单身份验证通过FormsAuthenticationModule类参与ASP.NET页面生命周期。您可以通过FormsAuthentication类访问表单身份验证信息和功能。
要使用表单身份验证,您需要创建一个登录页面,该页面从用户收集凭据,其中包含用于对凭据进行身份验证的代码。通常,您将应用程序配置为在用户尝试访问受保护资源(例如需要身份验证的页面)时将请求重定向到登录页面。如果用户的凭据有效,则可以调用FormsAuthentication类的方法,使用适当的身份验证票证(cookie)将请求重定向回最初请求的资源。如果您不想重定向,可以只获取表单身份验证cookie或进行设置。在后续请求中,用户的浏览器传递带有请求的身份验证cookie,然后绕过登录页面。
您可以使用身份验证配置元素配置表单身份验证。在最简单的情况下,您有一个登录页面。在配置文件中,您指定一个URL以将未经身份验证的请求重定向到登录页面。然后,您可以在Web.config文件中或单独的文件中定义有效凭据。以下示例显示配置文件中的一个部分,该部分指定Authenticate方法的登录页面和身份验证凭据。密码已使用HashPasswordForStoringInConfigFile方法加密。
在成功身份验证之后,FormsAuthenticationModule模块将User属性的值设置为对经过身份验证的用户的引用。下面的代码示例演示如何以编程方式读取经过表单身份验证的用户的标识。
Dim authUser2 As String = User.Identity.Name
表单身份验证,ASP.NET成员身份和登录控件
使用表单身份验证的一种便捷方法是使用ASP.NET成员身份和ASP.NET登录控件。 ASP.NET成员资格允许您存储和管理用户信息,并包括对用户进行身份验证的方法。 ASP.NET登录控件使用ASP.NET成员资格。它们封装逻辑以提示用户提供凭据,验证用户,恢复或替换密码等。实际上,ASP.NET成员资格和ASP.NET登录控件提供了一种表单身份验证的抽象层。这些功能取代了您通常必须执行的大部分或全部工作才能使用表单身份验证。有关更多信息,请参阅使用成员身份管理用户和ASP.NET登录控件概述。
表单身份验证和身份验证服务
您还可以使用ASP.NET身份验证服务将表单身份验证作为Windows Communication Framework(WCF)服务进行访问。身份验证服务使您可以从任何可以发送和使用SOAP格式的消息的应用程序中使用表单身份验证。身份验证服务接受用户凭据并返回表单身份验证cookie。
例如,您可以从未使用.NET Framework开发的应用程序登录用户。有关详细信息,请参阅Windows Communication Foundation身份验证服务概述。
表单身份验证控制流程
验证用户凭据,如果凭据经过身份验证,则将浏览器重定向到QueryString中指定的原始URL作为RETURNURL变量。默认情况下,身份验证票证是作为cookie发出的。
这里列出一个表格,可以去看看表格:https://docs.microsoft.com/en-us/previous-versions/aspnet/9fw3ef80%28v%3dvs.100%29
表单身份验证凭据
用于在登录时验证用户的表单身份验证凭据可以存储在外部数据源或应用程序配置文件中。
ASP.NET成员资格是在表单身份验证的应用程序中存储和管理用户凭据的首选方法。有关更多信息,请参阅使用成员身份管理用户。
Managing Users by Using Membership.
NET Framework包含一些类和方法,这些类和方法使您能够以编程方式为持久存储创建散列值。一个有助于编程此任务的类是FormsAuthentication类。它的HashPasswordForStoringInConfigFile方法可以进行散列。为了更精确的控制,还可以使用System.Security.Cryptography类。
存储在文本文件中的散列密码不能用于重新生成原始密码,但它们可能容易受到字典攻击。在这种类型的攻击中,攻击者在获得对密码文件的访问权之后,尝试通过使用软件迭代地散列大型字典中的所有单词来猜测密码,并将生成的散列与存储的散列进行比较。如果以任何方式存储散列密码,则应要求用户选择不是常用单词且包含一些数字和非字母数字字符的密码,以帮助防止字典攻击。此外,通过使用ASP.NET成员身份存储凭据,可以更轻松地进行凭据管理。有关更多信息,请参阅使用成员身份管理用户。
Managing Users by Using Membership.
表单身份验证实用程序
要管理表单身份验证,可以使用FormsAuthentication类的静态方法。下表列出了这些方法。
https://docs.microsoft.com/en-us/previous-versions/aspnet/874sbx60%28v%3dvs.100%29
需要对HTTP cookie属性进行详细控制的应用程序可以构造票据并在自定义代码中执行重定向。在这些情况下,您应该使用FormsAuthentication类的加密方法来加密身份验证票据。
处理表单身份验证事件
您可以处理表单身份验证事件以自定义表单身份验证过程的以下方面:
如何创建表单身份验证票证。
如何设置用户属性。
要执行这些任务,可以在应用程序的..asax文件中处理FormsAuthentication_OnAuthenticate事件。通常表单身份验证为您管理这些任务。但是,在应用程序中,您可能具有特定的身份验证要求,例如将User属性设置为实现IPrin.l接口的自定义类。有关更多信息,请参阅FormsAuthenticationEventHandler。
FormsAuthenticationEventHandler.
当通过身份验证服务访问表单身份验证时,可以处理身份验证事件以定制如何验证用户凭据。您可以处理CreatingCookie事件以定制服务返回的身份验证cookie的内容。有关更多信息,请参见如何:在使用WCF身份验证服务时自定义用户登录以及如何:从WCF身份验证服务自定义身份验证Cookie。
https://docs.microsoft.com/en-us/previous-versions/aspnet/467h1csc%28v%3dvs.100%29
跨应用程序表单身份验证
NET支持分布式环境中的表单身份验证,无论是跨单个服务器上的应用程序还是Web场中的应用程序。当跨多个ASP.NET应用程序启用表单身份验证时,在应用程序之间切换时不需要用户重新身份验证
跨应用程序配置表单身份验证
若要跨应用程序配置表单身份验证,请将Web.config文件的表单和machineKey部分的属性设置为参与共享表单身份验证的所有应用程序的相同值。
以下示例显示了Web.config文件的“身份验证”部分。除非另有说明,否则名称,保护,路径,validationKey,validation,decryptionKey和decryption属性在所有应用程序中必须相同。同样,加密和验证密钥值以及用于身份验证票证(cookie数据)的加密方案和验证方案必须相同。如果设置不匹配,则无法共享身份验证票证。有关如何为validationKey和decryptionKey属性生成值的信息,请参见如何:在ASP.NET 2.0中配置MachineKey。 (本主题适用于ASP.NET 2.0及更高版本。)
https://docs.microsoft.com/en-us/previous-versions/aspnet/eb0zx8fc%28v%3dvs.100%29#see-also
ASP.NET Forms身份验证概述的更多相关文章
- ASP.NET Forms 身份验证
ASP.NET Forms 身份验证 在开发过程中,我们需要做的事情包括: 1. 在 web.config 中设置 Forms 身份验证相关参数.2. 创建登录页. 登录页中的操作包括: 1. 验证用 ...
- asp.net Forms身份验证详解
在做网站的时候,都会用到用户登录的功能.对于一些敏感的资源,我们只希望被授权的用户才能够访问,这让然需要用户的身份验证.对于初学者,通常将用户登录信息存放在Session中,笔者在刚接触到asp.ne ...
- asp.net Forms身份验证
Web.config中的配置<system.web><authentication mode="Forms"> <forms name="K ...
- 两系统用asp.net forms 身份验证方式实现跨域登录信息共享
1.两个系统的 web.config 都配置为 forms 验证方式( system.web —> authentication 节点) 2.在两个系统的Web.config里配置相同的 sys ...
- 采用Asp.Net的Forms身份验证时,持久Cookie的过期时间会自动扩展
原文:http://www.cnblogs.com/sanshi/archive/2012/06/22/2558476.html 若是持久Cookie,Cookie的有效期Expiration属性有当 ...
- 采用Asp.Net的Forms身份验证时,非持久Cookie的过期时间会自动扩展
问题描述 之前没有使用Forms身份验证时,如果在登陆过程中把HttpOnly的Cookie过期时间设为半个小时,总会收到很多用户的抱怨,说登陆一会就过期了. 所以总是会把Cookie过期时间设的长一 ...
- Asp.Net MVC 身份验证-Forms
Asp.Net MVC 身份验证-Forms 在MVC中对于需要登录才可以访问的页面,只需要在对应的Controller或Action上添加特性[Authorize]就可以限制非登录用户访问该页面.那 ...
- ASP.NET:Forms身份验证和基于Role的权限验证
从Membership到SimpleMembership再到ASP.NET Identity,ASP.NET每一次更换身份验证的组件,都让我更失望.Membership的唯一作用就是你可以参考它的实现 ...
- asp.net的forms身份验证 单用户身份验证
asp.net的forms身份验证 单用户身份验证 首先要配置Web.config文件 <system.web> <authentication mode="Forms& ...
随机推荐
- golang 杂思
正文 这里给大家总结一些 Go player 开发小技巧. 欢迎批评和交流, 望大家喜欢. 1. 配置管理 推荐一种简单粗暴的配置管理方式 [配置 映射 内部结构]. 例如有个配置文件 config. ...
- LZO压缩算法64位崩溃问题
*** vs2013 64位调用LZO算法失败,原因: vs2013 long 类型4位 指针为8位. 解决: 将static lzo_bool basic_ptr_check(void)函数中,指针 ...
- docker kafka 外网访问不到
linux虚拟机中的kafka docker 容器外网显示: 原因: kafka的外网IP端口配置参数设置错误. 原-->设置了容器的IP端口. 改-->设置宿主机的ip以及宿主机上的端口 ...
- 20155227《网络对抗》Exp1 PC平台逆向破解(5)M
20155227<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数 ...
- 20155234 2016-2017-2 《Java程序设计》第7周学习总结
20155234 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 第十二章 Lambda Lambda表达式会使程序更加地简洁,在平行设计的时候,能够进行并行 ...
- Oracle单节点_Grid_Infrastructure_DB_安装过程图解(三/三)
接上文: Oracle单节点_Grid_Infrastructure_DB_安装过程图解(二/三)
- 仙人掌&圆方树
仙人掌&圆方树 Tags:图论 [x] [luogu4320]道路相遇 https://www.luogu.org/problemnew/show/P4320 [ ] [SDOI2018]战略 ...
- 将properties文件的配置设置为整个Web应用的全局变量。
四种作用域: Web应用中的变量存放在不同的jsp对象中,会有不一样的作用域,四种不同的作用域排序是 pageContext < request < session < applic ...
- SQL Server 中SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Tab ...
- jquery 直接访问图片路径
jQuery("#img").attr("src",function(){return this.src+"?"});