专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

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

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:42:13       共计:3637 浏览

实现原理:

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

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

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

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

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

6、完成扫码登录。

模拟web登录页面代码:


  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="Generator" content="EditPlus?">
  6. <meta name="Author" content="">
  7. <meta name="Keywords" content="">
  8. <meta name="Description" content="">
  9. <title>扫码登录测试</title>
  10. </head>
  11. <body>
  12. <script src="http://***/Scripts/jquery-1.10.2.min.js"></script>
  13. <script src="http://***/Scripts/jquery.signalR-2.4.1.min.js"></script>
  14. <script src="http://***/Scripts/jquery.qrcode.min.js"></script>
  15. <script src="http://***/Signalr/hubs"></script>
  16. <div id="qrcode"><canvas width="256" height="256"></canvas></div>
  17. <script type="text/javascript">
  18. jQuery.support.cors=true;
  19. var SignalrHub=$.connection.hub;
  20. $(function(){
  21. var loginCode=guid();
  22. //生成登录码二维码
  23. jQuery('#qrcode').qrcode(loginCode);
  24. console.log(loginCode);
  25. SignalrHub.url="http://***/Signalr/hubs";//服务器端Singnalr hub 路径
  26. var hubClient=$.connection.messageHub.client;
  27. hubClient.ShowMessage=function(msg)
  28. {
  29. var jsonMsg= $.parseJSON(msg);
  30. if(jsonMsg && jsonMsg.loginCode==loginCode)
  31. {
  32. //向服务器验证用户id+登录码
  33. if(server.CheckLoginCode(jsonMsg.UserId,jsonMsg.loginCode))
  34. {
  35. alert("登录成功!");
  36. top.location.reload();//跳转到需要的页面
  37. }
  38. }
  39. }
  40. SignalrHub.start();
  41. //SignalrHub.stop()
  42. });
  43. //生成仿Guid字符串
  44. function guid() {
  45. return 'ecbxxxxx-xxxx-xxxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  46. var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
  47. return v.toString(16);
  48. });
  49. }
  50. </script>
  51. </body>
  52. </html>

 

模拟服务器代码:


  1. //app设置用户登录码接口
  2. public string SetLoginCode(string userId,string loginCode)
  3. {
  4. //todo 设置登录码
  5. //广播消息
  6. var hub = GlobalHost.ConnectionManager.GetHubContext<MessageHub>();
  7. hub.Clients.All.ShowMessage(userId+loginCode);//也可以定向广播
  8. //web验证登录码接口
  9. public bool CheckLoginCode(string userId,string loginCode)
  10. {
  11. //todo 验证登录码
  12. //todo 验证成功 清除或者更改登录码
  13. return true
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:在IIs上部署asp.net core2.1项目 | ·下一条:SignalR+HTML5实现消息推送及Android通知栏消息

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有