实现原理:

1、web登录页面,利用jquery.qrcode展示一个随机生成的登录码的二维码;

2、手机App扫描二维码取得登录码;

3、手机App将本地用户id+登录码通过api提交服务器;

4、服务器api,收到手机App请求,根据用户id+登录码,修改用户信息,同时将用户id+登录码广播;

5、web登录页面收到用户id+登录码,先本地验证登录码是否一致,然后向服务器验证用户id+登录码,验证成功跳转到指定页面。

6、完成扫码登录。

模拟web登录页面代码:

<!doctype html>
<html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus®"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Description" content=""><title>扫码登录测试</title></head><body><script src="http://***/Scripts/jquery-1.10.2.min.js"></script><script src="http://***/Scripts/jquery.signalR-2.4.1.min.js"></script><script src="http://***/Scripts/jquery.qrcode.min.js"></script><script src="http://***/Signalr/hubs"></script><div id="qrcode"><canvas width="256" height="256"></canvas></div><script type="text/javascript">jQuery.support.cors=true;var SignalrHub=$.connection.hub;$(function(){var loginCode=guid();//生成登录码二维码jQuery('#qrcode').qrcode(loginCode);console.log(loginCode);SignalrHub.url="http://***/Signalr/hubs";//服务器端Singnalr hub 路径var hubClient=$.connection.messageHub.client;hubClient.ShowMessage=function(msg){var jsonMsg= $.parseJSON(msg);if(jsonMsg && jsonMsg.loginCode==loginCode){//向服务器验证用户id+登录码if(server.CheckLoginCode(jsonMsg.UserId,jsonMsg.loginCode)){alert("登录成功!");top.location.reload();//跳转到需要的页面}}}SignalrHub.start();//SignalrHub.stop()});//生成仿Guid字符串function guid() {return 'ecbxxxxx-xxxx-xxxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);return v.toString(16);});}</script></body>
</html>

模拟服务器代码:

//app设置用户登录码接口
public string SetLoginCode(string  userId,string loginCode)
{    //todo 设置登录码//广播消息var hub = GlobalHost.ConnectionManager.GetHubContext<MessageHub>();hub.Clients.All.ShowMessage(userId+loginCode);//也可以定向广播
}//web验证登录码接口
public bool CheckLoginCode(string  userId,string loginCode)
{    //todo 验证登录码//todo 验证成功 清除或者更改登录码return true;
}

服务器如何使用Signalr 请参阅相关文档 https://blog.csdn.net/admans/article/details/89309761。

利用Signalr实现手机端App扫码登录web页面相关推荐

  1. vue qrcodejs2生成二维码实现手机APP扫码进行web网页登录

    在vue中使用 qrcodejs2 1.安装 npm install  qrcodejs2 --save 2.引入 import QRCode from "qrcodejs2" 3 ...

  2. 网页二维码,App 扫码登录实现原理

    需求介绍 首先,介绍下什么是扫码登录.现在,大部分同学手机上都装有qq和淘宝,天猫等这一类的软件.而开发这些app的企业,都有他们相对应的网站.为了让用户在使用他们的网站时,登录更加方便和安全.这些企 ...

  3. 架构:网页二维码,App 扫码登录实现原理

    需求介绍 首先,介绍下什么是扫码登录.现在,大部分同学手机上都装有qq和淘宝,天猫等这一类的软件.而开发这些app的企业,都有他们相对应的网站.为了让用户在使用他们的网站时,登录更加方便和安全.这些企 ...

  4. 【app扫码登录】Java app扫码登录功能实现

    一.实现原理 PC 端发送 "扫码登录" 请求,服务端生成二维码 uuid,并存储二维码的过期时间.状态等信息. PC 端获取二维码并显示. PC 端开始轮询检查二维码的状态(2s ...

  5. 心通达OA 实现APP扫码登录过程

    1.PC端web页面上登录切换到二维码 2.打开手机APP扫码 3.扫描 4.扫描后确认登录. 完成登录,进入心通达OA系统.

  6. 手机端APP促销优惠券优惠活动页面设计模板

    进入十月各大商家纷纷计入促销倒计时队伍,力争全年销售达到理想的份额,促销当然离不开主题手机APP活动页面的设计,风格简约现代为主,注入直观优惠券传统元素的购物券,礼盒,VIP,金币等,让画面喜悦氛围得 ...

  7. php技术 网站PC端用手机APP扫码实现登录

    去年做的功能,整理一下分享出来 如淘宝,腾讯等网站登录页面,都有APP扫码登录这个功能,去年也做了一个,基于自己的APP实现, 并非第三方登陆. 思路:1. 生成一个二维码, 二维码链接带有密钥. 2 ...

  8. 微信电脑版只能扫码登录的原因,你一定想不到

    来源:电脑报CQCPCW 谁能想到,微信原本是作为一款社交软件,如今却成了很多上班族使用频率最高的办公软件.很多人电脑上安装了PC版微信,工作聊天两不误,传输文件也算方便. 但微信PC版总是不尽人意, ...

  9. 一图搞懂扫码登录的技术原理

    现在扫码登录是一种很常见的登录方式.当用户需要登录某个网站时,网站会提供一种扫码登录的方式,用户打开相应的手机App,扫描网站上显示的二维码,然后在App中确认登录,网站监测到用户确认登录后,跳转到登 ...

  10. Java 语言实现简易版扫码登录

    基本介绍 相信大家对二维码都不陌生,生活中到处充斥着扫码登录的场景,如登录网页版微信.支付宝等.最近学习了一下扫码登录的原理,感觉蛮有趣的,于是自己实现了一个简易版扫码登录的 Demo,以此记录一下学 ...

最新文章

  1. 计算机视觉 | YOLO开源项目汇总
  2. Spring Cloud Feign Clients 无需 Controller自动暴露Restful接口
  3. 怎样隐藏“滚动条”?
  4. java 连接 sftp失败,与apache vfs的SFTP连接失败,但使用WinSCP成功
  5. 第一天开始学习使用git中遇到的问题
  6. MyBatis 实际使用案例-核心对象的生命周期
  7. MyBatis.Net 学习手记
  8. QQ互联聚合登录中转API程序源码
  9. 整理JavaScript中,数组和字符的操作方法
  10. 10分钟虚拟设备接入阿里云IoT平台实战
  11. 黄子韬现身助力公益 百度推出听障儿童手语翻译小程序
  12. mysql function
  13. 使用tornado让你的请求异步非阻塞
  14. 笔记本我的计算机怎么找不到了,Win10我的电脑在哪?图标没了怎么办?Win10此电脑不见了解决方法...
  15. Asp.net中文件的上传和下载(视频教程)
  16. Maven的基本使用
  17. rk3568 sensor调试记录
  18. 移动APP开发框架总结
  19. 盐城机电高等职业技术学校计算机专业,盐城机电高等职业技术学校
  20. win10怎么显示文件后缀名,2个步骤,不到1分钟学会

热门文章

  1. android qq 邮箱格式,qq邮箱怎么填写格式 qq邮箱格式写法介绍
  2. 2014汽车之家笔试
  3. 深度挖掘积分墙,积分墙到底好不好?
  4. Codeforces 754D. Fedor and coupons
  5. 简述敏捷开发中的测试流程
  6. IOS学习之Segue
  7. 空间坐标系对应EPSG编号
  8. Win10系统中查看是否开启虚拟化
  9. android压缩gif大小,使用手机制作GIF动图,免费无水印、大小可调,安卓、iphone都可以...
  10. kindle- amazon kindle电子书导出 转换成epub,并显示中文名