前台发起接口 -> 后台java 监听按压 -> 用户按压前台提供的指纹仪(和后端绑定的) ->websocket实时返回指纹仪状态提醒前台用户按压 -> 指纹仪返回指纹id -> 后台根据指纹id查询数据库绑定的用户id -> 返回给前台用户信息
功能展示
通过接口远程调用指纹仪设备
通过webSocket实时返回指纹仪状态给前台
背景
跟老师做了一个人脸识别签到管理平台,,后面添加了需求要接入指纹识别。
前期分析
给一个已有的web项目添加生物指纹识别的方向【一个服务端 + 一个固定打卡的前台】
一个已有的指纹仪 + 各类语言的本地开发包 + dll库 + 驱动
预期方案
- 指纹识别外设装在前台 --> js包获取指纹返回id然后上传服务器处理
- 指纹识别设备装在后台 --> 前台发起请求后,直接从后台处理[指纹按压在后台服务器执行]
两种方法显然第一种更简单,但问题是已有的项目是web前后台分离项目,不是桌面程序应用可以直接调用官方提供的库。前台语言很难去调用本地库和开发包;并且驱动就限制了硬件只能允许在windows端.
最后就选择了后者。将开发包植入web后台,前台调用接口请求后台调用开发包去调用指纹仪,最后将指纹仪返回的指纹id和数据库处理得到指纹绑定的用户信息。
接入逻辑
web接口调用指纹仪
- 首先搭建指纹仪的本地运行环境
- 大致熟悉官方提供的demo包/sdk/jar包的使用方法
- 接入web系统
- 根据controller请求调用指纹仪接口,返回指纹仪处理处理好的数据
指纹仪状态推送
- 系统接入webSocket(使用spring托管)
- 用户建立连接时存储用户Session(webSocket包下面的)
- 在需要的地方注入webSocket,直接调用sentMessage返回实时状态信息
解决问题
每次后台录入指纹要录入三次,但一次接口只能返回一次结构,而不能中间主动提醒用户去录入,这时候就需要用webSocket了,详细见目录下另外一片webSocket【已解决】
\