热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

javascript-微信公众号开发,如何使用户保持登录状态

用户将openid与业务帐号绑定一次,如何实现用户一直处于登录状态?更换手机后?用于网页授权用户信息的access_token是怎么缓存和维护的?存储在seesion吗?微信中session会话什么时候会失效?(比如PC端关闭浏览器)
用户将openid与业务帐号绑定一次,如何实现用户一直处于登录状态?更换手机后?
用于网页授权用户信息的access_token是怎么缓存和维护的?存储在seesion吗?
微信中session会话什么时候会失效?(比如PC端关闭浏览器)

回复内容:

用户将openid与业务帐号绑定一次,如何实现用户一直处于登录状态?更换手机后?
用于网页授权用户信息的access_token是怎么缓存和维护的?存储在seesion吗?
微信中session会话什么时候会失效?(比如PC端关闭浏览器)

用户将openid与业务帐号绑定一次,如何实现用户一直处于登录状态?更换手机后?

  • 方法1:将微信号认证一下,使用OAuth接口,每次进入之前通过接口获取到用户的openid,然后再从你的数据库去读取关系,写入用户登录状态。

  • 方法2:用户点击菜单或者发送关键词是可以获取到用户的openid的,此时返回一个链接或图文消息,用户点击之后用get方式获取到openid,然后再从你的数据库去读取关系,写入用户登录状态。

商业产品正式使用推荐方法1。
个人做着玩玩的话推荐方法2。

用于网页授权用户信息的access_token是怎么缓存和维护的?存储在seesion吗?

用于网页授权用户信息的access_token是必须要进行缓存的,这个每日有接口频率限制,所以你必须缓存这个。
存在Memcache或redis等缓存服务,或者……你存到某个文件也行。
session一般是用来做用户会话,放到这里不保证可用,或者说这么做很奇怪。其他朋友补充下吧。

微信中session会话什么时候会失效?(比如PC端关闭浏览器)

微信的session和PC没关系啊。。
session什么时候过期这个说不来,和你服务器设置和微信自己都有关系吧我觉得。
COOKIE的话微信有一种很奇怪的过期方式,在很久以前的旧版本里很无厘头,经常是关了窗口就关了。

以上。

第1个问题:openid与业务账号绑定,这个和用户是否一直处理登录状态有什么关联吗?openid账号与每个微信公众号是唯一对应关系的,哪怕你取消关注后,再次关注,这个用户的微信号与你的公众号之间的openid也是不变的。
第2个问题:access_token有很多种方式可以缓存和维护,我通常会优先使用memcache(例如sinaapp开发,为key设置一个过期时间,小于微信的7200),或是xml文件,甚至有些网站会使用数据库。
第3个问题:微信公众号接口是无状态的会话,不存在session状态。如果是指自己开发的网站在微信中打开的session,失效就是你关闭网页时。
但这种情况会因为你手机对微信驻留后台的允许或禁止影响,例如你本来未关闭网页,但是你将微信窗口缩到后台,结果被安全软件把进程清理了,这时候也会失效。

其实楼主是想问用户绑定账号以后,让用户一直处于登录状态。

这里好像没有好的办法的。会话是无状态的,如果想让用户感觉着是一直登录状态,中间还得于微信系统进行一次交互才可以,在自定义菜单上可以通过自动回复关键字来实现这一点,其它没有找到好的解决办法,不交互你是根本无法知道用户是谁的

微信登录(所有的第三方登录)都不存在登录状态,获取用户信息都是要通过接口传递openid。(具体可以看看auth2.0)。
access_token 要保存到数据库,而不是session。可以用refresh_token 来刷新access_token(授权成功只会会同时给access_token 和refresh_token)。
你先需要理清楚登录的流程。

通过网页授权接口取到code,换取openid,然后由后端传给前端,存储在本地。每次用户访问带着openid去访问后端接口,如何判定到该openid已经绑定业务帐号,就默认处于登录状态。如果前端取不到openid,就再次走网页授权接口最终获取到openid.暂时是这么做的

推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
夫妇郭_390
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有