From 36ceaaf9e4a67df3e29d12139acf3c002fa225ad Mon Sep 17 00:00:00 2001
From: CZT <czt18638530771@163.com>
Date: 星期二, 26 三月 2024 19:17:49 +0800
Subject: [PATCH] 增加登录校验

---
 src/main/java/com/fzzy/sys/entity/SysUser.java         |   10 +-
 src/main/resources/templates/home/home.html            |    5 +
 src/main/resources/templates/login/login.html          |   40 +++++-----
 src/main/java/com/fzzy/conf/WebMvcConfig.java          |   19 ++++
 src/main/java/com/fzzy/sys/UserPR.java                 |   18 ++-
 src/main/resources/templates/home/home2.html           |    3 
 src/main/resources/templates/home/home-whjl.html       |    3 
 src/main/java/com/fzzy/conf/LicenseHandlerAdepter.java |   45 +++++++++++
 src/main/java/com/fzzy/web/LoginController.java        |   38 +++++++--
 src/main/java/com/fzzy/api/Constant.java               |    2 
 10 files changed, 138 insertions(+), 45 deletions(-)

diff --git a/src/main/java/com/fzzy/api/Constant.java b/src/main/java/com/fzzy/api/Constant.java
index f91bc09..7ebc740 100644
--- a/src/main/java/com/fzzy/api/Constant.java
+++ b/src/main/java/com/fzzy/api/Constant.java
@@ -315,6 +315,6 @@
     /**
      * 榛樿鐢ㄦ埛瀵嗙爜锛岀敤鎴风淮鎶ら噸缃瘑鐮佷娇鐢�
      */
-    public static final String DEFAULT_USER_PASSWORD = "123456";
+    public static final String DEFAULT_USER_PASSWORD = "abc123456";
 
 }
diff --git a/src/main/java/com/fzzy/conf/LicenseHandlerAdepter.java b/src/main/java/com/fzzy/conf/LicenseHandlerAdepter.java
new file mode 100644
index 0000000..32ca25b
--- /dev/null
+++ b/src/main/java/com/fzzy/conf/LicenseHandlerAdepter.java
@@ -0,0 +1,45 @@
+package com.fzzy.conf;
+
+import com.fzzy.sys.entity.SysUser;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+/**
+ *
+ */
+@Slf4j
+public class LicenseHandlerAdepter implements HandlerInterceptor {
+
+    @Override
+    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
+            throws Exception {
+    }
+
+    @Override
+    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
+            throws Exception {
+    }
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
+        try{
+            HttpSession session = request.getSession();
+            SysUser user = (SysUser)session.getAttribute("user");
+            if(null == user){
+                response.sendRedirect("./login");
+                return false;
+            }
+            return true;
+        }catch (Exception e){
+            log.error("璇佷功楠岃瘉澶辫触:" + e.getMessage(),e);
+            response.sendRedirect("./login");
+            return false;
+        }
+
+    }
+
+}
diff --git a/src/main/java/com/fzzy/conf/WebMvcConfig.java b/src/main/java/com/fzzy/conf/WebMvcConfig.java
index e9e7317..adfbae3 100644
--- a/src/main/java/com/fzzy/conf/WebMvcConfig.java
+++ b/src/main/java/com/fzzy/conf/WebMvcConfig.java
@@ -19,7 +19,7 @@
      */
     @Override
     public void addViewControllers(ViewControllerRegistry registry) {
-        registry.addViewController("/").setViewName("forward:/home");
+        registry.addViewController("/").setViewName("forward:/login");
         registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
         super.addViewControllers(registry);
     }
@@ -39,4 +39,21 @@
 
 
     }
+
+    /**
+     * 鎷︽埅鍣ㄩ厤缃�
+     * license 璇锋眰鎷︽埅
+     *
+     * @param registry
+     */
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(new LicenseHandlerAdepter())
+                //鎷︽埅璺緞
+                .addPathPatterns("/home")
+                .addPathPatterns("/home2")
+                .addPathPatterns("/home-whjl")
+                .excludePathPatterns("login")
+                .excludePathPatterns("/service/api/order");
+    }
 }
diff --git a/src/main/java/com/fzzy/sys/UserPR.java b/src/main/java/com/fzzy/sys/UserPR.java
index a2d884d..8dfe4ba 100644
--- a/src/main/java/com/fzzy/sys/UserPR.java
+++ b/src/main/java/com/fzzy/sys/UserPR.java
@@ -59,14 +59,12 @@
             if (null == entity.getCreateDate()) {
                 entity.setCreateDate(new Date());
             }
-//            if (null == entity.getCompanyId()) {
-//                entity.setCompanyId(ContextUtil.getCompanyId(true));
-//            }
+
             //瀵嗙爜鍔犲瘑
             int salt = RandomUtils.nextInt(27);
             salt += 4;
-            bCryptPasswordEncoder = new BCryptPasswordEncoder(salt);
-            String password = bCryptPasswordEncoder.encode(entity.getPassword());
+            BCryptPasswordEncoder encode = new BCryptPasswordEncoder();
+            String password = encode.encode(entity.getPassword());
 //            boolean b= bCryptPasswordEncoder.matches(entity.getPassword(),password);
             entity.setPassword(password);
             entity.setSalt(String.valueOf(salt));
@@ -98,11 +96,12 @@
      */
     @Expose
     public String resetPassword(SysUser entity) {
+
         //瀵嗙爜鍔犲瘑
         int salt = RandomUtils.nextInt(27);
         salt += 4;
-        bCryptPasswordEncoder = new BCryptPasswordEncoder(salt);
-        String password = bCryptPasswordEncoder.encode(Constant.DEFAULT_USER_PASSWORD);
+        BCryptPasswordEncoder encode = new BCryptPasswordEncoder();
+        String password = encode.encode(Constant.DEFAULT_USER_PASSWORD);
         entity.setPassword(password);
         entity.setSalt(String.valueOf(salt));
 
@@ -120,4 +119,9 @@
         return null;
     }
 
+    public boolean checkPassword(String inputPwd, SysUser user) {
+        BCryptPasswordEncoder encode = new BCryptPasswordEncoder();
+        return encode.matches(inputPwd, user.getPassword());
+    }
+
 }
diff --git a/src/main/java/com/fzzy/sys/entity/SysUser.java b/src/main/java/com/fzzy/sys/entity/SysUser.java
index e5801ec..34eef2c 100644
--- a/src/main/java/com/fzzy/sys/entity/SysUser.java
+++ b/src/main/java/com/fzzy/sys/entity/SysUser.java
@@ -16,22 +16,22 @@
 
 
     @Id
-    @Column(name = "USERNAME_", length = 30, nullable = false)
+    @Column(name = "USERNAME_", length = 30)
     private String username;
 
     @Column(name = "COMPANY_ID_", length = 20)
     private String companyId;
 
-    @Column(name = "NAME_", length = 60, nullable = false)
+    @Column(name = "NAME_", length = 60)
     private String name;
 
-    @Column(name = "PASSWORD_", length = 70, nullable = false, updatable = false)
+    @Column(name = "PASSWORD_", length = 70)
     private String password;
 
-    @Column(name = "SALT_", length = 10, nullable = false, updatable = false)
+    @Column(name = "SALT_", length = 10)
     private String salt;
 
-    @Column(name = "MALE_", nullable = false)
+    @Column(name = "MALE_")
     private boolean male = true;
 
     @Column(name = "BIRTHDAY_")
diff --git a/src/main/java/com/fzzy/web/LoginController.java b/src/main/java/com/fzzy/web/LoginController.java
index 7ccbb6a..7edaff0 100644
--- a/src/main/java/com/fzzy/web/LoginController.java
+++ b/src/main/java/com/fzzy/web/LoginController.java
@@ -1,16 +1,15 @@
 package com.fzzy.web;
 
+import com.fzzy.sys.UserPR;
+import com.fzzy.sys.entity.SysUser;
 import com.wf.captcha.ArithmeticCaptcha;
 import com.wf.captcha.utils.CaptchaUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PostMapping;
-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.*;
 import org.springframework.web.servlet.ModelAndView;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -25,6 +24,9 @@
 @RequestMapping
 public class LoginController {
 
+    @Autowired
+    private UserPR userPR;
+
     /**
      * 鐧诲綍楠岃瘉鍏ュ彛
      *
@@ -33,7 +35,7 @@
      * @param captcha
      * @return
      */
-    @PostMapping("/login-check")
+    @GetMapping("/login-check")
     public String login(HttpServletRequest request,
                         @RequestParam(name = "username_") String username,
                         @RequestParam(name = "password_") String password,
@@ -42,9 +44,26 @@
         if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
             return "redirect:/login?tag=01&username=" + username;
         }
+        if (StringUtils.isEmpty(captcha)) {
+            return "redirect:/login?tag=02&username=" + username;
+        }
 
+        //鏍¢獙楠岃瘉鐮�
         boolean validateCode = CaptchaUtil.ver(captcha, request);
-        log.info("-----------楠岃瘉鐮�-----------{}", validateCode);
+        if (!validateCode) {
+            return "redirect:/login?tag=04&username=" + username;
+        }
+
+        SysUser user = userPR.listById(username);
+        if (null == user) {
+            return "redirect:/login?tag=05&username=" + username;
+        }
+
+        boolean tag = userPR.checkPassword(password, user);
+        if (!tag){
+            return "redirect:/login?tag=06&username=" + username;
+        }
+        request.getSession().setAttribute("user", user);
 
         return "redirect:/home";
     }
@@ -101,8 +120,6 @@
     public void captcha(HttpServletResponse response, HttpServletRequest request) {
         //璁剧疆闀垮
         try {
-            //鐢熸垚鏅�氶獙璇佺爜
-            // SpecCaptcha specCaptcha = new SpecCaptcha();
             //鐢熸垚绠楁暟楠岃瘉鐮�
             ArithmeticCaptcha arithmeticCaptcha = new ArithmeticCaptcha();
             //璁剧疆2涓虹畻鏁�
@@ -125,7 +142,8 @@
      * @return
      */
     @RequestMapping("/log-out")
-    public String logOut() {
+    public String logOut(HttpServletRequest request) {
+        request.getSession().removeAttribute("user");
         return "redirect:/login";
     }
 
diff --git a/src/main/resources/templates/home/home-whjl.html b/src/main/resources/templates/home/home-whjl.html
index 4d5f29a..c3ecea2 100644
--- a/src/main/resources/templates/home/home-whjl.html
+++ b/src/main/resources/templates/home/home-whjl.html
@@ -95,6 +95,9 @@
                             <dd>
                                 <a lay-href="com.fzzy.api.view.GbCheckItem.d">妫�楠岄」閰嶇疆</a>
                             </dd>
+                            <dd>
+                                <a lay-href="com.fzzy.sys.User.d">鐢ㄦ埛绠$悊</a>
+                            </dd>
                         </dl>
                     </li>
 
diff --git a/src/main/resources/templates/home/home.html b/src/main/resources/templates/home/home.html
index ebaf2ec..837a850 100644
--- a/src/main/resources/templates/home/home.html
+++ b/src/main/resources/templates/home/home.html
@@ -50,7 +50,7 @@
                         </dd>
                         <hr>
                         <dd>
-                            <a href="#" target="_self">閫�鍑�</a>
+                            <a href="./log-out">閫�鍑�</a>
                         </dd>
                     </dl>
                 </li>
@@ -95,6 +95,9 @@
                             <dd>
                                 <a lay-href="com.fzzy.api.view.GbCheckItem.d">妫�楠岄」閰嶇疆</a>
                             </dd>
+                            <dd>
+                                <a lay-href="com.fzzy.sys.User.d">鐢ㄦ埛绠$悊</a>
+                            </dd>
                         </dl>
                     </li>
 
diff --git a/src/main/resources/templates/home/home2.html b/src/main/resources/templates/home/home2.html
index b567a95..9a0f52b 100644
--- a/src/main/resources/templates/home/home2.html
+++ b/src/main/resources/templates/home/home2.html
@@ -97,6 +97,9 @@
 								<dd>
 									<a lay-href="com.fzzy.api.view.GbCheckItem.d">妫�楠岄」閰嶇疆</a>
 								</dd>
+								<dd>
+									<a lay-href="com.fzzy.sys.User.d">鐢ㄦ埛绠$悊</a>
+								</dd>
 							</dl>
 						</li>
 						<li data-name="component" class="layui-nav-item"><a
diff --git a/src/main/resources/templates/login/login.html b/src/main/resources/templates/login/login.html
index 99ce7fe..3b8eb0c 100644
--- a/src/main/resources/templates/login/login.html
+++ b/src/main/resources/templates/login/login.html
@@ -89,26 +89,26 @@
             }
         });
 
-        // 杩涜鐧诲綍鎿嶄綔
-        form.on('submit(login)', function (data) {
-            data = data.field;
-            if (data.username_ == '') {
-                layer.msg('鐢ㄦ埛鍚嶄笉鑳戒负绌�');
-                return false;
-            }
-            if (data.password_ == '') {
-                layer.msg('瀵嗙爜涓嶈兘涓虹┖');
-                return false;
-            }
-            if (data.captcha_ == '') {
-                layer.msg('楠岃瘉鐮佷笉鑳戒负绌�');
-                return false;
-            }
-            layer.msg('鐧诲綍鎴愬姛', function () {
-                window.location = './login';
-            });
-            return false;
-        });
+        // // 杩涜鐧诲綍鎿嶄綔
+        // form.on('submit(login)', function (data) {
+        //     data = data.field;
+        //     if (data.username_ == '') {
+        //         layer.msg('鐢ㄦ埛鍚嶄笉鑳戒负绌�');
+        //         return false;
+        //     }
+        //     if (data.password_ == '') {
+        //         layer.msg('瀵嗙爜涓嶈兘涓虹┖');
+        //         return false;
+        //     }
+        //     if (data.captcha_ == '') {
+        //         layer.msg('楠岃瘉鐮佷笉鑳戒负绌�');
+        //         return false;
+        //     }
+        //     layer.msg('鐧诲綍鎴愬姛', function () {
+        //         window.location = './login';
+        //     });
+        //     return false;
+        // });
     });
 
     window.onload = function () {

--
Gitblit v1.9.3