Sesson和cookie判断是否登陆的问题,大家来看看

好奇都是要学的 2015-01-20 11:57:59
在判断用户的时候我通常用sesson,但是它有过期失效使的用户重复登陆。但要是把时间设置长了还占用服务器资源。我就想如果把sesson和cookie合起来用那,cookie在不设置时间的时候它的生命就是网页关闭的时候,当sesson失效时我去把cookie给sesson这样就防止用户重复登陆了。但我这么想后我就觉得为什么不直接判断cookie那,那我还用sesson 干什么。我一下午纠结了。请大家给我讲讲呗
...全文
358 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
种草德鲁伊 2015-01-27
  • 打赏
  • 举报
回复
其实很简单,要区分是否重复登陆,必须要用唯一的数据作依据,cookie或session都是不可行的。
  • 打赏
  • 举报
回复
对,session,在iis进程中会 丢失,然后session就失效了 最好用cookie,设置过期时间,cookie是存到本地电脑上了
Giacinta_zw 2015-01-27
  • 打赏
  • 举报
回复
学习学习。。。
skyandcode 2015-01-26
  • 打赏
  • 举报
回复
引用 17 楼 5653325 的回复:
[quote=引用 16 楼 skyandcode 的回复:] [quote=引用 14 楼 sp1234 的回复:] [quote=引用 5 楼 wang2129929 的回复:] [quote=引用 4 楼 Z65443344 的回复:] 所以一般都是session和cookie结合,哪个有就用哪个,都没有才需要重新登录,而不是仅仅用其中一样
如果我用cookie判断当前人是否登陆, 那我伪造一个cookie 那这个账号岂不是一直登陆着 [/quote] cookie 中保存账号,那就是坑爹了。因为账号是公共信息,就好像人名一样是公共信息,你怎么能把公共信息作为判断依据呢? cookie中应该保存的是授权编号。例如一个账号登录之后,就会随机分配 6a586fd1-f65e-4931-a132-a07236ca5944 这样一个编号。在后台,根据这个编号可以知道用户的登录身份、权限、购物车等等各种信息,即使是web服务器重启,也不会丢失这个信息。如果用户有1小时没有访问,可能这个编号在后台就删除掉了。 总之,cookie中不是保存账号。[/quote] sp1234,这样似乎还是没有解决cookie被盗问题。 如果拿到这个授权编号,那不是一样成功登陆了。[/quote] 在判断一下上次登录IP是否和现在的一样,或者多个cookie,它们几个组合一起才是一个完整的验证(或者某些可以标识本台计算机唯一的信息)。[/quote] 貌似只有 SSL 和 检测 ip 可以解决
踏平扶桑 2015-01-26
  • 打赏
  • 举报
回复
引用 16 楼 skyandcode 的回复:
[quote=引用 14 楼 sp1234 的回复:] [quote=引用 5 楼 wang2129929 的回复:] [quote=引用 4 楼 Z65443344 的回复:] 所以一般都是session和cookie结合,哪个有就用哪个,都没有才需要重新登录,而不是仅仅用其中一样
如果我用cookie判断当前人是否登陆, 那我伪造一个cookie 那这个账号岂不是一直登陆着 [/quote] cookie 中保存账号,那就是坑爹了。因为账号是公共信息,就好像人名一样是公共信息,你怎么能把公共信息作为判断依据呢? cookie中应该保存的是授权编号。例如一个账号登录之后,就会随机分配 6a586fd1-f65e-4931-a132-a07236ca5944 这样一个编号。在后台,根据这个编号可以知道用户的登录身份、权限、购物车等等各种信息,即使是web服务器重启,也不会丢失这个信息。如果用户有1小时没有访问,可能这个编号在后台就删除掉了。 总之,cookie中不是保存账号。[/quote] sp1234,这样似乎还是没有解决cookie被盗问题。 如果拿到这个授权编号,那不是一样成功登陆了。[/quote] 在判断一下上次登录IP是否和现在的一样,或者多个cookie,它们几个组合一起才是一个完整的验证(或者某些可以标识本台计算机唯一的信息)。
skyandcode 2015-01-24
  • 打赏
  • 举报
回复
引用 14 楼 sp1234 的回复:
[quote=引用 5 楼 wang2129929 的回复:] [quote=引用 4 楼 Z65443344 的回复:] 所以一般都是session和cookie结合,哪个有就用哪个,都没有才需要重新登录,而不是仅仅用其中一样
如果我用cookie判断当前人是否登陆, 那我伪造一个cookie 那这个账号岂不是一直登陆着 [/quote] cookie 中保存账号,那就是坑爹了。因为账号是公共信息,就好像人名一样是公共信息,你怎么能把公共信息作为判断依据呢? cookie中应该保存的是授权编号。例如一个账号登录之后,就会随机分配 6a586fd1-f65e-4931-a132-a07236ca5944 这样一个编号。在后台,根据这个编号可以知道用户的登录身份、权限、购物车等等各种信息,即使是web服务器重启,也不会丢失这个信息。如果用户有1小时没有访问,可能这个编号在后台就删除掉了。 总之,cookie中不是保存账号。[/quote] sp1234,这样似乎还是没有解决cookie被盗问题。 如果拿到这个授权编号,那不是一样成功登陆了。
  • 打赏
  • 举报
回复
怎么没有人来那
  • 打赏
  • 举报
回复
引用 8 楼 wang2129929 的回复:
[quote=引用 6 楼 Z65443344 的回复:] [quote=引用 5 楼 wang2129929 的回复:] [quote=引用 4 楼 Z65443344 的回复:] 所以一般都是session和cookie结合,哪个有就用哪个,都没有才需要重新登录,而不是仅仅用其中一样
如果我用cookie判断当前人是否登陆, 那我伪造一个cookie 那这个账号岂不是一直登陆着 [/quote] 那就给存入cookie的内容加密呗,再说cookie里只应该存个会话ID,不要把用户信息也存进去[/quote] 我想了另一个办法绕过这个问题,你看实际不。我怕SESSON回话失败,我放一个隐藏IFRAME,让他15或者20分钟刷新一次。这样就不会丢失SESSON也不用去担心伪造COOKIE了。 你觉得那,或者用一个AJX 15分钟刷连接下这个网站。[/quote] Session集合的问题不是“过期”,而是“丢失”。如果他会出问题,98%在丢失,2%才是过期。你得“办法”丝毫没有解决丢失问题。
  • 打赏
  • 举报
回复
引用 5 楼 wang2129929 的回复:
[quote=引用 4 楼 Z65443344 的回复:] 所以一般都是session和cookie结合,哪个有就用哪个,都没有才需要重新登录,而不是仅仅用其中一样
如果我用cookie判断当前人是否登陆, 那我伪造一个cookie 那这个账号岂不是一直登陆着 [/quote] cookie 中保存账号,那就是坑爹了。因为账号是公共信息,就好像人名一样是公共信息,你怎么能把公共信息作为判断依据呢? cookie中应该保存的是授权编号。例如一个账号登录之后,就会随机分配 6a586fd1-f65e-4931-a132-a07236ca5944 这样一个编号。在后台,根据这个编号可以知道用户的登录身份、权限、购物车等等各种信息,即使是web服务器重启,也不会丢失这个信息。如果用户有1小时没有访问,可能这个编号在后台就删除掉了。 总之,cookie中不是保存账号。
三楼の郎 2015-01-20
  • 打赏
  • 举报
回复
1、session存服务器,cookie存客户端 2、session通过sessionid索引,sessionid存cookie或url 3、所有保存到客户端的东西都不安全
  • 打赏
  • 举报
回复
引用 11 楼 Z65443344 的回复:
如果你仅仅是纠结session有超时时间,你把超时时间设置成365天好了
我啥时候说自动登陆了?
於黾 2015-01-20
  • 打赏
  • 举报
回复
如果你仅仅是纠结session有超时时间,你把超时时间设置成365天好了
於黾 2015-01-20
  • 打赏
  • 举报
回复
引用 8 楼 wang2129929 的回复:
[quote=引用 6 楼 Z65443344 的回复:] [quote=引用 5 楼 wang2129929 的回复:] [quote=引用 4 楼 Z65443344 的回复:] 所以一般都是session和cookie结合,哪个有就用哪个,都没有才需要重新登录,而不是仅仅用其中一样
如果我用cookie判断当前人是否登陆, 那我伪造一个cookie 那这个账号岂不是一直登陆着 [/quote] 那就给存入cookie的内容加密呗,再说cookie里只应该存个会话ID,不要把用户信息也存进去[/quote] 我想了另一个办法绕过这个问题,你看实际不。我怕SESSON回话失败,我放一个隐藏IFRAME,让他15或者20分钟刷新一次。这样就不会丢失SESSON也不用去担心伪造COOKIE了。 你觉得那,或者用一个AJX 15分钟刷连接下这个网站。[/quote] 我觉得你还是先缕清楚业务需求吧,不要老靠拍脑袋想方案了 你这个方案已经离你一开始的需求越来越远了 难道一开始不是为了关闭网页,立即打开(或者已经设置了一周内自动登录),不需要再次登陆吗? 你用隐藏域或者ajax反复提交,也只是让用户一直停留在同一个页面里时session不会超时,这跟自动登陆有一毛钱关系?
qzyf1992 2015-01-20
  • 打赏
  • 举报
回复
cookie存用户名加时间混合加密加过期时间,服务器那边有个这个加密后的key的集合。每次登陆判断cookie的值是否在这个集合里就好了。在就是登陆状态,不在就是非登陆状态。没有必要用什么session.
  • 打赏
  • 举报
回复
引用 6 楼 Z65443344 的回复:
[quote=引用 5 楼 wang2129929 的回复:] [quote=引用 4 楼 Z65443344 的回复:] 所以一般都是session和cookie结合,哪个有就用哪个,都没有才需要重新登录,而不是仅仅用其中一样
如果我用cookie判断当前人是否登陆, 那我伪造一个cookie 那这个账号岂不是一直登陆着 [/quote] 那就给存入cookie的内容加密呗,再说cookie里只应该存个会话ID,不要把用户信息也存进去[/quote] 我想了另一个办法绕过这个问题,你看实际不。我怕SESSON回话失败,我放一个隐藏IFRAME,让他15或者20分钟刷新一次。这样就不会丢失SESSON也不用去担心伪造COOKIE了。 你觉得那,或者用一个AJX 15分钟刷连接下这个网站。
於黾 2015-01-20
  • 打赏
  • 举报
回复
这就跟身份证还是银行卡一样 身份证里存的就是身份证号,补办了也是补办一张一样的,2张都是合法的都可以用 而银行卡只是关联你在银行里户头的一个ID,可以随时换一个,之前的就作废了 你存到cookie里的如果是用户名,那当然我伪造一个就可以同一个用户在好几台电脑上登陆了,那不乱套了 而如果你是在每次重新登陆的时候动态给用户分配一个GUID,然后cookie里存这个 如果验证cookie的时候有记录跟它匹配,那么就让这个用户自动登陆,如果数据库里已经没有这个记录了,就作废了呗
於黾 2015-01-20
  • 打赏
  • 举报
回复
引用 5 楼 wang2129929 的回复:
[quote=引用 4 楼 Z65443344 的回复:] 所以一般都是session和cookie结合,哪个有就用哪个,都没有才需要重新登录,而不是仅仅用其中一样
如果我用cookie判断当前人是否登陆, 那我伪造一个cookie 那这个账号岂不是一直登陆着 [/quote] 那就给存入cookie的内容加密呗,再说cookie里只应该存个会话ID,不要把用户信息也存进去
  • 打赏
  • 举报
回复
引用 4 楼 Z65443344 的回复:
所以一般都是session和cookie结合,哪个有就用哪个,都没有才需要重新登录,而不是仅仅用其中一样
如果我用cookie判断当前人是否登陆, 那我伪造一个cookie 那这个账号岂不是一直登陆着
於黾 2015-01-20
  • 打赏
  • 举报
回复
所以一般都是session和cookie结合,哪个有就用哪个,都没有才需要重新登录,而不是仅仅用其中一样
於黾 2015-01-20
  • 打赏
  • 举报
回复
1.你就用cookie呗,没人说不可以 2.session除了放用户名之外,还有别的用处,你不能把什么东西都放cookie里 3.cookie是可以随时手动清除的,因为它保存在客户端,而session保存在服务端
加载更多回复(1)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧