app登录接口和session咨询

后台和APP的登录接口一般是分开还是同一个呢?现在还使用session吗?使用session的话app端接口如何处理?如果用JWT的话又无法注销登录,也不好访问的时候自动延续过期时间啊。谢谢各位不吝赐教

阅读 4.6k
6 个回答

登录生成token,将token和loginUserInfo以键值对的形式保存到redis(可以设置有效期),同时将token返回给客户端。
客户端在header里带上token就好了。
服务端获取header里的token,查询redis,获取loginUserInfo,查询不到说明没登录

session 是 session
web 应用是用cookie里存 session key,jwt 相当于直接保存和传输 session 内容
没有浏览器环境不能用 cookie,也不想用 jwt,那就自己管理自己处理 session key(一般也叫token...)就可以了

无论是token还是session或者cookie,其实其本质都是一样的。因为http是无状态的,我们想办法让其有状态,无非就是通过请求的时候传递一个标识,cookie,seesion,token都是一样的道理。只要你能传递就行。

最主要的问题,一个是jwt后台不存储用户登录信息,一个是session后台存储登录信息。jwt会有一个问题,就是如果token设置太长,可能会被用户获取随意使用,且不能退出;设置太短,需要经常刷新。session的问题是如果用户量太大,后台存储可能效率不高。这个就看自己怎么抉择了。

但是实际应用上,登录系统都是需要后台存储用户登录信息的,不会采用jwt这种方式。这种方式主要用于微信,qq这种三方授权登录的。

使用 Session-Cookie 的话

Web 浏览器可以自动维护 Cookie,App 端需要主动维护 Cookie。

使用 JWT 的话

  1. 可以通过 token 黑名单,主动使 token 过期。
  2. 续签问题,可以搜索一下JWT无感刷新,通过设置过期时间点和刷新时间点来实现。

我理解的是在JWT客户端删除token就是未登录状态了吧

APP肯定不是session啊,就没session_id,
jwt可以注销登录,为啥不能,直接把token删了就可以了,自动延期也没问题啊?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题