Browse Source

人脸识别登录,前端传base64

wukai 1 year ago
parent
commit
749c907d8d

+ 31 - 4
doc-admin/src/main/java/com/doc/web/controller/system/SysLoginController.java

@@ -20,9 +20,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.*;
 
 /**
  * 登录验证
@@ -134,7 +134,34 @@ public class SysLoginController {
         File upFile = File.createTempFile("temp_" + filename[0], filename[1] + ".");
         file.transferTo(upFile);
 
-        long uid = faceService.faceLogin(upFile);
+        return faceLogin(upFile);
+    }
+
+    @ApiOperation("人脸识别")
+    @PostMapping("/face-login-base64")
+    public AjaxResult face(@RequestBody Map<String, String> params) throws Exception {
+        String img = params.get("img");
+        String[] tmp = img.split(",");
+        String suffix = "." + tmp[0].split("/")[1];
+        byte[] imageBytes = Base64.getDecoder().decode(tmp[1]);
+
+        File upFile = File.createTempFile("temp_" + Math.random(), suffix);
+        try (FileOutputStream fos = new FileOutputStream(upFile)) {
+            fos.write(imageBytes);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return faceLogin(upFile);
+    }
+
+    /**
+     * 人脸识别登录处理
+     *
+     * @param file 图片文件
+     * @return ajax
+     */
+    private AjaxResult faceLogin(File file) {
+        long uid = faceService.faceLogin(file);
         if (uid != 0) {
             SysUser user = userService.selectUserById(uid);
             // 生成令牌

+ 1 - 1
doc-framework/src/main/java/com/doc/framework/config/SecurityConfig.java

@@ -112,7 +112,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
                 // 过滤请求
                 .authorizeRequests()
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                .antMatchers("/login", "/register", "/captchaImage", "/face-login").permitAll()
+                .antMatchers("/login", "/register", "/captchaImage", "/face-login", "/face-login-base64").permitAll()
                 // 增加API接口允许匿名访问
                 .antMatchers("/api/**").permitAll()
                 // 增加API接口允许匿名访问