Csharp/C#教程:.NET Session – 持久会话,即使用户关闭浏览器也是如此分享


.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[]集合访问的任何内容。

我看到一个大型银行成功使用*的更好的技术是在数据库中存储持久会话相关信息。

基本上你需要

  1. 一个primary键和foreign键的表,用户ID,a)与需要存储的变量一样多的列,或b)包含类的序列化值的单个BLOB列
  2. PersistentSession
  3. 在Global.asax Session_Start或更好的Application_PostAuthenticateRequest方法中填充该对象并将其保存在Session对象中
  4. 在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

(0)
上一篇 2021年11月26日
下一篇 2021年11月26日

精彩推荐