Browse Source

使用密保更换管理员出现异常问题

wangmh 7 years ago
parent
commit
f9fb4a1484

+ 12 - 6
sso-server/src/main/java/com/uas/sso/controller/ChangeAdminController.java

@@ -1,5 +1,6 @@
 package com.uas.sso.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.uas.sso.core.Const;
 import com.uas.sso.core.Status;
 import com.uas.sso.entity.*;
@@ -11,10 +12,7 @@ import com.uas.sso.util.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
 import java.util.List;
@@ -70,6 +68,13 @@ public class ChangeAdminController extends BaseController {
         data.put("mobile", Status.AUTHENTICATED.getCode() == user.getMobileValidCode() ? user.getMobile() : null);
         data.put("email", Status.AUTHENTICATED.getCode() == user.getEmailValidCode() ? user.getEmail() : null);
         data.put("questions", !CollectionUtils.isEmpty(user.getQuestions()) ? user.getQuestions() : null);
+        if (!CollectionUtils.isEmpty(user.getQuestions())) {
+            Map<Long, String> userAnswer = new HashMap<>(user.getQuestions().size());
+            for (UserQuestion question : user.getQuestions()) {
+                userAnswer.put(question.getId(), question.getAnswer());
+            }
+            request.getSession().setAttribute("answers", userAnswer);
+        }
         request.getSession().setAttribute("user", user);
         return success(data);
     }
@@ -186,12 +191,13 @@ public class ChangeAdminController extends BaseController {
      * @return
      */
     @RequestMapping(value = "/check/question", method = RequestMethod.POST)
-    public ModelMap checkByQuestion(List<Map<String, Object>> answers) {
+    public ModelMap checkByQuestion(String answers) {
         UserAccount userAccount = SystemSession.getUserAccount();
+        List<Map> jsonAnswer = JSON.parseArray(answers, Map.class);
 
         // 校验密保答案
         Map<Long, String> userAnswer = (Map<Long, String>) request.getSession().getAttribute("answers");
-        for (Map<String, Object> answer : answers) {
+        for (Map<String, Object> answer : jsonAnswer) {
             if (!answer.get("answer").equals(userAnswer.get(answer.get("id")))){
                 return error("答案错误");
             }