FormsAuthentication.SetAuthCookie存储数据所在的位置

时间:2012-07-20 00:53:59

标签: c# asp.net .net-4.0

在以下代码中,创建用户帐户(userid,password)存储在?

FormsAuthentication.SetAuthCookie(RegisterUser.UserName,false / * createPersistentCookie * /);

Sameway,当LogIn,它是如何工作的?...(即)如何检索值并将其与我们在登录页面中输入的数据(用户ID,密码)进行比较..请解释过程..我有怀疑它是否在ASPNETDB.MDF中被分类 - > aspnet_Membership ..如果值存储在这里,那么当从这里检索值时应用程序如何工作以比较我们在表单中输入的数据。这就是我的意思是应用程序是.NET4.0中的示例应用程序(Visual Studio 2010)。 .Pls帮助..

1 个答案:

答案 0 :(得分:0)

更新 24/12/2012

以下答案已过期。 古老的 FormsAuthentication.Authenticate 现在在ASP.NET 4 MVC 4中标记为过时

MVC 4附带新品牌打屁股WebSecurity认证系统,解决了旧系统的许多问题。除非您的项目仍在使用MVC 3或更低版本,否则请查看它。



简短答案是"它非常谨慎。"

答案很长......

用户帐户详细信息(默认情况下)存储在SQL CE数据库(位于ASPNETDB.MDF文件中)

ASP.NET有一个内置的Membership和Role Provider系统来协助身份验证。这是ASP.NET用于启用内置帐户支持的抽象。默认情况下,在创建应用程序时,会配置web.config文件,以便您的应用程序使用此成员资格提供程序的内置实现,以允许您的应用程序执行读写数据库,散列或加密密码的魔力,验证用户.etc。

您获得的代码示例是表单身份验证的一部分

  

FormsAuthentication.SetAuthCookie(RegisterUser.UserName,false / * createPersistentCookie * /);

默认情况下,它是管理身份验证的组件。执行上述调用时,ASP.NET Forms身份验证系统会加密用户名和会话数据,并将其存储在用户浏览器的cookie中。 (当您调用FormsAutentication.SignOut())

时,将删除此cookie

此Cookie会针对每个请求传输到您的服务器。因此,对于每个请求,FormsAuthentication都会检查并验证它(解密它,检查用户是谁,验证会话未过期,并在应用程序中设置一些属性,以便您的代码可以知道正在发出请求的用途)。

如果设置了/ * createPersistentCookie * /参数,则cookie被设置为持久性,这意味着当您在登录时关闭并重新打开浏览器时,cookie不会被删除。这和您一样登录,比如说Facebook,然后勾选“记住我'复选框,Visual Studio创建的项目的默认实现在您的登录页面中完成此操作。

希望您现在能够更好地了解登录过程中发生的情况。由于这些在ASP.NET中实现的方式,如果您愿意,可以使用自己的实现轻松配置,扩展或替换功能。

为了更好地理解工作原理,请按照本文了解如何实现自定义成员资格提供程序http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx

我应该告诉你,如果你是ASP.NET的新手,那么阅读会员和身份验证的工作原理可能会非常困难。 (我个人花了最近几天试图理解并编写一个自定义会员提供商来满足我的要求。这有点令人沮丧,所以我休息一下,回答你并用基础知识重新思考。)

如果您对现有系统的工作原理感到满意,请使用它。实现自定义提供程序以了解其工作原理并不会造成任何损害。但内置系统在过去十年中经历了大量测试,并证明可行。那么为什么不使用呢?我在不同的网站上看到过多次尝试替换现有会员系统的自定义实施,只是因为他们并不完全理解它。这些实现中的大多数最终会重写已有的内容,并且在可扩展性和安全性方面不尽如人意。就像一个聪明人曾经说过的那样,“如果它没有被破坏,就不要修理它”。