IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> JAVA web App扫码登录 -> 正文阅读

[移动开发]JAVA web App扫码登录

1:web端请求服务端获取到sessionId,将sessionId设置一个过期时间存入redis

@ApiOperation("前端生成二维码,请求绑定关系,二维码过期时间30秒")
@PostMapping("/request")
public AjaxResult request(HttpServletRequest request) {
    String id = request.getSession().getId();
    redisService.set(id, id, 30);
    return AjaxResult.success("", id);
}

2:轮询,返回给前端信息

@ApiOperation("前端轮询该接口,扫码登录之后返回信息")
@PostMapping("/loopCode")
public AjaxResult loopCode(String sessionId) {
   Object o = redisService.get(sessionId);
   if (ObjectUtils.isEmpty(o)) {
       return AjaxResult.error("二维码已过期");
   }
   // APP端扫码认证成功之后将1中的缓存sessionId 更新为success或者自定义值
   if (o.toString().equals("success")) {
      // 将令牌和用户信息返回给web端跳转即可
      String mobile = (String) redisService.get(sessionId + "login");
      String token = (String) redisService.get(sessionId + mobile);
      AppUser user = tokenManage.getUser(token);
      Map map = new HashMap();
      map.put("token", token);
      map.put("user", user);
      return AjaxResult.success(map);
    }
    return new AjaxResult(AjaxResult.Type.SCAN_CODE, "扫码中");
}

3:扫码登录,app请求之后获取到二维码中的sessionId,将sessionId和手机号在缓存中绑定,并修改1中的缓存value

 @ApiOperation("扫码登录")
    @PostMapping("/scanLogin")
    public AjaxResult scanLogin(String mobile, String sessionId) {
        Object o = redisService.get(sessionId);
        if (ObjectUtils.isEmpty(o)) {
            return AjaxResult.error("无效码");
        }
        AppUser appUser = appUserService.selectAppUserByPhonenumber(mobile);
        String token = tokenManage.getToken(appUser);
        if (ObjectUtils.isEmpty(token)) {
            return new AjaxResult(APP_AUTH_LOGIN, "令牌已过期,请重新登录");

        }
        redisService.set(sessionId, "success", 20);
        redisService.set(sessionId + "login", mobile, 20);
        redisService.set(sessionId + mobile, token,20);
        return AjaxResult.success();
    }

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:12:56  更:2022-03-06 13:13:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 17:21:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码