瓦史托德 2018-08-06 03:12 采纳率: 50%
浏览 1968
已采纳

java单点登录session的问题

1.如何管理全局session的过期时间?
全局session必须在所有局部session过期才会过期,这不是每次操作都得更新一下?或者设置为永久,监听所有局部session过期后手动失效?
2.为什么都要使用token来验证?
看了很多像cas都有token,直接看这个全局的session(或者redis)是否验证过就行了,还要搞个token有特殊意义吗?
3.是否有必要存cookie(还是token),因为可以用jsessionid
好像没币了....

  • 写回答

1条回答 默认 最新

  • 玄尺 2018-08-06 05:37
    关注

    1、session的目的是为了在服务器端维护用户的信息,为了避免大量用户接入,而每个用户访问时长都很短,这才给session添加超时的约束。基于这个前提,session一般设计的时候可以不需要每次操作都需要刷新,一旦超时,可以让用户再次登录。当然用户体验上不是很好,但是这自然是没问题的。
    我们一般采用折中的方案,我们选取操作流程中的安全点,安全点是指我们核心业务中用户必定会操作的点,只在安全点上进行刷新用户session,这样可以解决你的问题。

    2、token机制是为了安全,但是仅仅使用token时不够的,结合你的第一个问题,一般都是用户登录的时候生成token,而且token必须经常刷新。如果没有token保护,web接口基本上任何人都可以调用,如果是一般read操作也就罢了,但是如果是写操作,想想就可怕,直接通过接口篡改用户数据。。。

    3、jessionId这是框架生成Id,但是我们一般都是全局session,所以sessionId都是自己生成的。cookie和session功能都是一样的,都是为了保存用户信息,只不过一个在客户端一个在服务器。至于用不用,怎么用还是看需求,辅之安全性考虑。

    建议你读一下HTTP的RFC文档,你说的这几个问题涉及到HTTP的用户信息保存、安全性。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 苹果手机不使用大疆sdk怎么获取遥控器控制信息或如何接入大疆sdk并且成功上架sdk
  • ¥15 改动头文件造成的编译错误如何解决
  • ¥20 woocommerce 注册按键重定向
  • ¥100 求书法图像文字切割代码
  • ¥15 同一个波形探测距离不同的目标,为什么fft之后得到的频谱图会发生移动,不应该时移不改变幅度谱吗(标签-matlab)(相关搜索:matlab仿真)
  • ¥20 【初学者】comsol周期性电流如何设置?例如通电三天断电三天
  • ¥15 Proteus仿真程序只能执行一次
  • ¥15 语音识别websocket报错
  • ¥15 激光器,引脚问题,无法处理
  • ¥20 求写一份!只提交Mapper映射文件 如:UsersMapper.xml