派生自 projectDept/qhighschool

yn147
2023-04-13 e10efae34a92fdcb6451f1a6a823a72b8c394d43
密码加密
3个文件已修改
81 ■■■■ 已修改文件
src/main/java/com/qxueyou/scc/sys/action/LoginController.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/user/model/User.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/user/service/impl/UserService.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/sys/action/LoginController.java
@@ -24,6 +24,7 @@
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.*;
import com.qxueyou.scc.admin.teacher.service.ITeacherService;
@@ -183,8 +184,8 @@
        // 查询用户信息
        String uuNumber=null;
        String uuReNumber=null;
        String hql = "from User where deleteFlag is false and account = ? and password = ? ";
        List<Object> params =  CollectionUtils.newList(account,password);
        String hql = "from User where deleteFlag is false and account = ?";
        List<Object> params =  CollectionUtils.newList(account);
        User user = commonDAO.findUnique(hql,params, User.class);
        if (user == null ) {
            return new Result(false, "用户账户、密码错误");
@@ -213,6 +214,12 @@
        }
        // 插入日志
        insertLoginLog(request, user, account, "SYS-LOGIN");
        String salt = user.getSalt();
        String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
        //比较用户输入的密码加密后的字符串是否跟注册时填写的加密密码相同
        if (!newPassword.equals(user.getPassword())) {
            return new Result(false, "用户账户、密码错误或缺少凭证");
        }
        // 返回
        return new Result(true, "验证成功",CollectionUtils.newObjectMap("uuNumber",uuNumber,"uuReNumber",uuReNumber));
    }
@@ -374,11 +381,11 @@
        List<Object> params = null;
//        boolean flag=true;
        if ("study".equals(logType)) {
            hql = "from User where deleteFlag is false and account = ? and password = ? ";
            params = CollectionUtils.newList(account, password);
            hql = "from User where deleteFlag is false and account = ?";
            params = CollectionUtils.newList(account);
        }else if("portal".equals(logType)){
            hql = "from User where deleteFlag is false and mobilePhone = ? and password = ? ";
            params = CollectionUtils.newList(account, password);
            hql = "from User where deleteFlag is false and mobilePhone = ?";
            params = CollectionUtils.newList(account);
        }else{
            if(StringUtils.isEmpty(password)) {
                return new Result(false, "用户密码不能为空");
@@ -406,13 +413,19 @@
//            request.getSession().removeAttribute("uuReNumber");
//        }
        if (user == null) {
            return new Result(false, "用户账户不存在");
        }
        // 插入日志
        insertLoginLog(request, user, account, "SYS-LOGIN");
        //考试登录会控制flag变量 其他登录不会 默认true
        if (user == null) {
        String salt = user.getSalt();
        String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
        //比较用户输入的密码加密后的字符串是否跟注册时填写的加密密码相同
        if("study".equals(logType) || "portal".equals(logType)){
            if (!newPassword.equals(user.getPassword())) {
            return new Result(false, "用户账户、密码错误或缺少凭证");
        }
        }
        // 返回用户基本信息
        return this.loginValidate(user, 1, request, response, logType, platForm, organizationId);
src/main/java/com/qxueyou/scc/user/model/User.java
@@ -38,6 +38,19 @@
    @JsonIgnore
    private String createId;
    @Column(name = "SALT", nullable = false, length = 32)
    @JsonIgnore
    private String salt;
    public String getSalt() {
        return salt;
    }
    public void setSalt(String salt) {
        this.salt = salt;
    }
    /**
     * 创建时间
     */
src/main/java/com/qxueyou/scc/user/service/impl/UserService.java
@@ -1,6 +1,7 @@
package com.qxueyou.scc.user.service.impl;
import java.util.List;
import java.util.UUID;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +21,7 @@
import com.qxueyou.scc.user.model.User;
import com.qxueyou.scc.user.model.UserReRoleUser;
import com.qxueyou.scc.user.service.IUserService;
import org.springframework.util.DigestUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -85,13 +87,18 @@
    }
    private User newUser(String name, String account, String mobilePhone, String password, Boolean sex, String orgId) {
        //随机字符串
        String salt= UUID.randomUUID().toString();
        User user = new User();
        TraceUtils.setCreateTrace(user);
        user.setAccount(account);
        user.setName(name);
        //盐值
        user.setSalt(salt);
        //对密码进行加密处理
        String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
        user.setPassword(newPassword);
        user.setMobilePhone(mobilePhone);
        user.setPassword(password);
        user.setSex(sex);
        user.setOrganizationId(orgId);
        save(user);
@@ -125,11 +132,18 @@
    @Override
    public Result updatePassword(String userId, String usedPass, String pass) {
        User user = read(User.class, userId);
        //随机字符串
        String salt= UUID.randomUUID().toString();
        //盐值
        user.setSalt(salt);
        //对密码进行加密处理
        String newPassword= DigestUtils.md5DigestAsHex((salt+pass).getBytes());
        String newPasswords= DigestUtils.md5DigestAsHex((salt+usedPass).getBytes());
        if (StringUtils.isNotBlank(usedPass) && StringUtils.isNotBlank(pass)) {
            if (!user.getPassword().equals(usedPass)) {
            if (!user.getPassword().equals(newPasswords)) {
                return new Result(false, "输入的旧密码错误");
            }
            user.setPassword(pass);
            user.setPassword(newPassword);
        }
        TraceUtils.setUpdateTrace(user);
        save(user);
@@ -177,8 +191,14 @@
    public Result updatePassword(String userId, String password) {
        User user = read(User.class, userId);
        //随机字符串
        String salt= UUID.randomUUID().toString();
        //盐值
        user.setSalt(salt);
        //对密码进行加密处理
        String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
        TraceUtils.setUpdateTrace(user);
        user.setPassword(password);
        user.setPassword(newPassword);
        save(user);
@@ -219,11 +239,12 @@
                             Boolean sex) {
        User dbUser = read(User.class, userId);
        String salt = dbUser.getSalt();
        String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
        if (dbUser.getAccount().equals(account)) {
            dbUser.setName(name);
            dbUser.setMobilePhone(mobilePhone);
            dbUser.setPassword(password);
            dbUser.setPassword(newPassword);
            TraceUtils.setCreateTrace(dbUser);
            save(dbUser);
            return new Result(true, "success");
@@ -236,7 +257,7 @@
        dbUser.setAccount(account);
        dbUser.setName(name);
        dbUser.setMobilePhone(mobilePhone);
        dbUser.setPassword(password);
        dbUser.setPassword(newPassword);
        TraceUtils.setCreateTrace(dbUser);
        save(dbUser);
        return new Result(true, "success");