CZT
2024-03-26 36ceaaf9e4a67df3e29d12139acf3c002fa225ad
增加登录校验
已修改9个文件
已添加1个文件
183 ■■■■ 文件已修改
src/main/java/com/fzzy/api/Constant.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/conf/LicenseHandlerAdepter.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/conf/WebMvcConfig.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/sys/UserPR.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/sys/entity/SysUser.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/web/LoginController.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/home/home-whjl.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/home/home.html 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/home/home2.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/login/login.html 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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";
}
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;
        }
    }
}
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");
    }
}
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());
    }
}
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_")
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";
    }
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>
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>
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
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 () {