扫码登录简单实现思路
首先,我们需要一个通用接口,该接口能针对不同的请求生成具有请求唯一性的二维码:
controller接口如下:
@RequestMapping("qrcode/{id}")
public ResponseEntity<Resource> code(@PathVariable("id") String id){
try {
return qrCodeEncode("http://192.168.1.105/auth/"+id,
new File("src/main/resources/static/code"+id+".png"));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
上面这段代码会根据id这个参数动态生成一个二维码并返回给前端。
然后,我们还需要一个验证接口:
@RequestMapping("auth/{id}")
public @ResponseBody String auth(@PathVariable("id") String id){
WebSocket.sendMsg(id,"验证成功,token:123");
return "验证成功";
}
这里我直接返回验证成功的同时使用websocket给前端发送一个消息,可以把登录token传给前端,当然也可以使用轮询实现。
前端JS代码如下:
当然,这样的一个程序还是有更多需要考虑到的地方,特别是ID,肯定不能这么简简单单一位数字就完成。