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