首页 / 二维码 / Websocket 实现扫码二维码登录
Websocket 实现扫码二维码登录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Websocket 实现扫码二维码登录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1612字,纯文字阅读大概需要3分钟。
内容图文
最近在做一个扫码登录功能,为此我还在网上搜了一下关于微信的扫描登录的实现方式。当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些。
要实现扫码登录我们需要解决两个问题:
1. 在没有输入用户名及密码的情况下,如何解决权限安全问题?换句话讲,如何让服务器知道扫码二维码的客户端是一个合法的用户?
2. 服务器根据用户在客户端的选择如何实时在网页上作出相应的响应?
首先我们先理一下微信的实现思路,来方便我们理解解决这一难题的思路方向。微信登录的二维码实际上是将一个 URL 转换成二维码的形式,而通过微信客户端扫码后,无非就是打开了这个 url, 我捕捉到的微信二维码的 url 为 https://login.weixin.qq.com/l/YdmTu30I5A== ,这个 url 里的 YdmTu30I5A== 代表的是本次会话的唯一 ID, 这个有点儿类似浏览器里的 session id ,通过这个 ID, 微信就能定向将确认结果反馈到网页上。使用微信二维码登录功能,需要有两个前提:一是客户端上需要安装微信 app 。 二是用户需要登录到到微信 app 。 https://wx.qq.com/
为什么要有这两个条件呢?那是因为微信在确认是否允许登录到网页版的时候,微信需要提取当前 app 的登录信息并将上面的 session ID 一并发给服务器,这样服务器收到了登录信息和 sessionID 后就可以确认两件事:一是用来确认登录的客户端的用户是验证过的;二是通过 session ID 服务器知道将反馈结果推送到哪个网页。
所以针对第一点,我们的关键在于,在扫描前要确保用户是已经被验证过且合法的用户(验证方式可以是用户名 + 密码,也可以是一个 secure key ),在选择是否登录时将这个结果一并推送到服务器端,就好了。如果用户没有验证是否合法,可以像微信的处理方式一样直接告诉用户二维码不可识别或提示请先登录到 app 。
有了身份验证,那么现在就解决第二个问题,如何将反馈结果实时地显示在网页上呢?有朋友可能会说,客户端这边很简单发一个请求到后台就好了,而网页上用 ajax 定时发送到服务器端看是否有反馈。我不赞成这种做法,因为 ajax 轮询方式十分消耗客户端和服务器端资源!这里涉及到另一个技术 -web 实时推送技术,使用推送技术可以节约服务器端和客户端的资源,可以稳定地推送和接收任何消息。我在实现的过程中我采用了第三方推送服务 -GoEasy 推送,用它是实现非常简单,我们项目里的其他功能也用到了 GoEasy web 实时推送服务,所以在此我直接就用的 GoEasy 推送来将登录反馈结果推送到服务器。我的实现步骤非常简单,将传送的 session ID 作为客户端与网页端的通信 channel ,网页端订阅用 session ID 作为值得 channel ,客户端将验证结果和 session ID 发送到服务器端,服务器端可以通过这个 channel 主动将结果推送给网页版!如果客户端也需要做相应的反馈的话,那么客户端也只需要订阅这个 channel, 然后服务器端会同时将结果推送给网页版和客户端,收到消息后,就可以根据需求在 goeasy 的回调函数里做你想做的事情了。关于 goeasy 推送的使用,大家可以参考这篇博客: http://www.cnblogs.com/jishaochengduo/articles/5552645.html , 另外 GoEasy 推送官网上也有一个 demo : GoEasy 二维码 扫码登录demo , 大家可以去看看效果 .
希望对大家有帮助,如有理解错误的地方,还请大家斧正。
内容总结
以上是互联网集市为您收集整理的Websocket 实现扫码二维码登录全部内容,希望文章能够帮你解决Websocket 实现扫码二维码登录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。