用于保持某人登录的ASP.Net会话和Cookie
我已经有了一个我正在接管的现有站点,现在它在会话变量中存储了当前登录用户的id(如果已经登录的话)——否则我肯定它是空字符串或null或其他 客户机现在希望,在有人登录后,让他们在该计算机上无限期地登录 我相信ASP.net会话的最大空闲时间为1天。网站的Flash部分写得不是很好,整个前端都是Flash,Flash将处理登录,然后,只要Flash没有重新加载,就假设用户仍然登录 我认为我的解决方案是还存储一个具有一些GUID值的客户端cookie,并在数据库中保存相关的用户id…有点像一个永不过期的会话。因此,当加载页面时,我可以检查我的cookie,使用它从数据库中选择用户ID,如果我们找到一个,则设置会话值,表示用户23已登录 有没有人从这个角度看问题?你能推荐一些不同的吗?我真的不想重构一堆现有的代码,但只是把它放在最上面用于保持某人登录的ASP.Net会话和Cookie,asp.net,session,cookies,Asp.net,Session,Cookies,我已经有了一个我正在接管的现有站点,现在它在会话变量中存储了当前登录用户的id(如果已经登录的话)——否则我肯定它是空字符串或null或其他 客户机现在希望,在有人登录后,让他们在该计算机上无限期地登录 我相信ASP.net会话的最大空闲时间为1天。网站的Flash部分写得不是很好,整个前端都是Flash,Flash将处理登录,然后,只要Flash没有重新加载,就假设用户仍然登录 我认为我的解决方案是还存储一个具有一些GUID值的客户端cookie,并在数据库中保存相关的用户id…有点像一个永不
PS-安全性并不是一个真正的问题。他们让人们登录的唯一原因是我们可以跟踪一个人的订单,但是没有钱通过这个网站转手。也没有用户可以查看或编辑的个人信息。我就是这样做的。我实际上有一个cookie,保存他们的登录名和密码,这样,如果他们没有登录,我可以自动登录。我在几天的不活动后使cookie过期。缺点是每个人都会忘记自己的密码,因为他们真正需要输入密码的唯一时间是他们从延长的休息时间回来时 这是一个内部应用程序,与您有相同的客户需求,这是有效的。。。让顾客满意
我们最终可能会做的一件事就是使用Windows Authenization,在这种情况下可能会更好。我就是这样做的,但它的问题是,至少我认为它的问题是,当您将用户名和密码存储在cookie中时,添加cookie时没有任何加密。如果您查看浏览器中的cookies,用户名和密码会显示在浏览器中。有可能在你存储的cookies上进行某种加密吗?或者你将如何处理这个问题?查看这篇博客文章基本上你需要用一个guid来保存cookie,一个系列,一个令牌,在我的例子中,这个令牌一直在变化,这个系列是基于一些东西生成的,比如guid和id组合或其他什么,然后guid总是与用户一起存储。有一个cookie表存储此信息等。。。很安全,不是100%,但是很好 我建议使用企业库加密应用程序块来存储加密的cookie,它只不过是一个GUID。获取GUID,并使用数据库中的会话表跟踪用户信息 在会话开始事件中,获取用户信息并将其缓存
用户信息不建议使用session对象,因为它在web服务器场上不起作用,除非您使用数据库作为会话状态。此时您基本上是在滚动自己的会话状态,对此我没有意见。但是,即使加密了,我也不会选择将用户名/密码存储在cookie中。无法从服务器端使其过期。您始终可以删除表中的行以强制用户再次登录,但如果他们持有用户名/密码,他们将持有王国的密钥。我们的用户不在同一网络上,因此网络身份验证不是一个选项,但感谢您的建议。我将在cookie中存储一个guid,而不是像您那样的用户名/密码,并查找它。看来我们的观点是一致的。谢谢杰出的不管值多少钱,我都会加密cookie值。哈哈!是的,虽然这不重要,但用纯文本存储用户名和密码会让我丧命。然后,我会按照您的建议—将用户名/密码全部加密的客户端存储在cookie中。没有数据库以这种方式更改。再次感谢。无论加密与否,在cookie中存储用户名和/或密码客户端都是一种糟糕的形式,IMHO。当我阅读线程时,我意识到它没有那么清楚。我的意思是,在服务器端,我加密用户名/密码,然后将加密值作为cookie发送。在随后的一个请求中,我接收加密的值并在服务器端对其进行解密。客户端没有明文内容。