瀏覽代碼

代码重构

tom.xu@informa.com 2 年之前
父節點
當前提交
8812f939f3

+ 31 - 0
src/main/java/ieven/server/webapp/api/UserController.java

@@ -0,0 +1,31 @@
+package ieven.server.webapp.api;
+
+import ieven.server.webapp.domain.user.User;
+import ieven.server.webapp.infrastructure.wrapper.Mapped;
+import ieven.server.webapp.service.user.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpSession;
+
+@RestController
+public class UserController {
+  @Autowired UserService userService;
+  /**
+   * 登录账号
+   *
+   * @param user
+   * @return
+   */
+  @PostMapping("login")
+  public Mapped loginAccount(@RequestBody User user, HttpSession session) {
+    User user2 = userService.loginAccount(user);
+    if (user2 != null) {
+      session.setAttribute("loginUser", user);
+      return Mapped.OK();
+    }
+    return Mapped.ERROR("用户名或者密码错误!");
+  }
+}

+ 38 - 0
src/main/java/ieven/server/webapp/config/LoginInterceptor.java

@@ -0,0 +1,38 @@
+package ieven.server.webapp.config;
+
+import cn.hutool.json.JSONUtil;
+import ieven.server.webapp.domain.user.User;
+import ieven.server.webapp.infrastructure.wrapper.Mapped;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+
+@Component
+public class LoginInterceptor implements HandlerInterceptor {
+  @Override
+  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
+      throws Exception {
+    User user = (User) request.getSession().getAttribute("loginUser");
+    if (user == null) {
+      returnNoLogin(response);
+      return false;
+    } else {
+      return true;
+    }
+  }
+
+  private void returnNoLogin(HttpServletResponse response) throws IOException {
+    ServletOutputStream outputStream = response.getOutputStream();
+    // 设置返回401 和响应编码
+    response.setStatus(401);
+    response.setContentType("Application/json;charset=utf-8");
+    // 构造返回响应体
+    String resultString = JSONUtil.toJsonStr(Mapped.ERROR(401, "登录已过期"));
+    outputStream.write(resultString.getBytes(StandardCharsets.UTF_8));
+  }
+}

+ 21 - 0
src/main/java/ieven/server/webapp/config/WebConfiger.java

@@ -0,0 +1,21 @@
+package ieven.server.webapp.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class WebConfiger implements WebMvcConfigurer {
+  @Autowired LoginInterceptor loginInterceptor;
+
+  // 自定义国际化组件
+
+  @Override
+  public void addInterceptors(InterceptorRegistry registry) {
+    registry
+        .addInterceptor(loginInterceptor)
+        .addPathPatterns("/**")
+        .excludePathPatterns("/index.html", "/", "/login");
+  }
+}

+ 17 - 0
src/main/java/ieven/server/webapp/domain/user/User.java

@@ -0,0 +1,17 @@
+package ieven.server.webapp.domain.user;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class User implements Serializable {
+
+  private Integer id; // 主键
+  private String loginName; //
+  private String password; //
+}

+ 23 - 16
src/main/java/ieven/server/webapp/infrastructure/wrapper/Mapped.java

@@ -3,23 +3,30 @@ package ieven.server.webapp.infrastructure.wrapper;
 import java.util.HashMap;
 import java.util.HashMap;
 
 
 public class Mapped extends HashMap<String, Object> {
 public class Mapped extends HashMap<String, Object> {
-    private static final long serialVersionUID = 5413868421528992856L;
+  private static final long serialVersionUID = 5413868421528992856L;
 
 
-    public static Mapped newResponse() {
-        return new Mapped();
-    }
+  public static Mapped newResponse() {
+    return new Mapped();
+  }
 
 
-    public static Mapped OK() {
-        Mapped response = new Mapped();
-        response.put("code", 200);
-        response.put("message", "");
-        return response;
-    }
+  public static Mapped OK() {
+    Mapped response = new Mapped();
+    response.put("code", 200);
+    response.put("message", "");
+    return response;
+  }
 
 
-    public static Mapped ERROR(String message) {
-        Mapped response = new Mapped();
-        response.put("code", 201);
-        response.put("message", message);
-        return response;
-    }
+  public static Mapped ERROR(String message) {
+    Mapped response = new Mapped();
+    response.put("code", 201);
+    response.put("message", message);
+    return response;
+  }
+
+  public static Mapped ERROR(Integer code, String message) {
+    Mapped response = new Mapped();
+    response.put("code", code);
+    response.put("message", message);
+    return response;
+  }
 }
 }

+ 37 - 0
src/main/java/ieven/server/webapp/service/user/UserService.java

@@ -0,0 +1,37 @@
+package ieven.server.webapp.service.user;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONUtil;
+import ieven.server.webapp.domain.user.User;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class UserService {
+
+  public List<User> users = new ArrayList<>();
+
+  @PostConstruct
+  public void loadUsers() {
+    List<String> strings = FileUtil.readLines("user.json", "utf-8");
+    JSONArray jsonArray = JSONUtil.parseArray(String.join("", strings));
+    this.users = JSONUtil.toList(jsonArray, User.class);
+    for (User user : users) {
+      System.out.println(user.getLoginName());
+    }
+  }
+
+  public User loginAccount(User user) {
+    for (User user1 : users) {
+      if (user.getLoginName().equals(user1.getLoginName())
+          && user.getPassword().equals(user1.getPassword())) {
+        return user;
+      }
+    }
+    return null;
+  }
+}

+ 10 - 0
src/main/resources/user.json

@@ -0,0 +1,10 @@
+[
+  {
+    "loginName": "admin",
+    "password": "123456"
+  },
+  {
+    "loginName": "13817329969",
+    "password": "123456"
+  }
+]