.NET Session – 持久会话,即使用户关闭浏览器也是如此
我们使用.net framework 3.5和C#。
我们有一个网站要求用户登录。所以我们使用数据库来检查登录/密码是否正确。
然后我们调用FormsAuthentication.SetAuthCookie() ,因此用户我们将在我的应用程序中登录。
在所有后续页面中,如果用户已登录,我们将检查User.Identity.IsAuthenticated() 。
我们希望保留此会话,即使用户关闭了borwser。
怎么做最好的方法呢?
我们也遇到了丢失会话的问题,突然用户失去了他的身份validation状态,我认为通过这种新的持久性我们也可以解决这个问题。
(对不起我的英语……葡萄牙语发言人)
你不应该混合术语,记住你在asp.net中同时拥有身份validationcookie和会话状态。
您似乎正在寻找持久的身份validationcookie。 尝试持久的auth cookie
FormsAuthentication.SetAuthCookie("xxx",true);
https://msdn.microsoft.com/en-us/library/twk5762b(v=vs.90).aspx
传递true将允许身份validationcookie在浏览器重新启动后继续存在。 您还应该考虑web.config中表单身份validation和会话的超时值
我建议使用更简洁的方法来存储会话信息。 当然,Shay用于持久化身份validationcookie的方法是正确的 ,但是在将应用程序扩展到多个并发用户时,长时间存储sessionState会有严重的缺陷。
首先,澄清一下,会话状态实际上意味着您可以通过Session[]
集合访问的任何内容。
我看到一个大型银行成功使用*的更好的技术是在数据库中存储持久会话相关信息。
基本上你需要
- 一个
primary
键和foreign
键的表,用户ID,a)与需要存储的变量一样多的列,或b)包含类的序列化值的单个BLOB列 -
PersistentSession
类 - 在Global.asax
Session_Start
或更好的Application_PostAuthenticateRequest
方法中填充该对象并将其保存在Session
对象中 - 在Global.asax
Session_End
方法中将对象从Session
保存到DB
如果你选择方法B只是序列化/反序列化对象,你就得到了它!
*这些家伙使用SAVESESSION
的真正方式是完全不同的
上述就是C#学习教程:.NET Session – 持久会话,即使用户关闭浏览器也是如此分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/961492.html