whycxzp
2022-07-15 636c7bbbd8b4d503b9f0e84fe80ceb8868c5c2bc
用户登录
1个文件已添加
2个文件已修改
63 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/LoginController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/DocUserService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/UserBridgeService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/LoginController.java
New file
@@ -0,0 +1,29 @@
package com.whyc.controller;
import com.whyc.dto.Response;
import com.whyc.service.DocUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RequestMapping("login")
@RestController
@Api(tags = "登录")
public class LoginController {
    @Autowired
    private DocUserService userService;
    @PostMapping("/")
    @ApiOperation(value ="登录")
    public Response login(@RequestParam String name, String snId, HttpServletRequest request){
        return userService.login(name,snId,request);
    }
}
src/main/java/com/whyc/service/DocUserService.java
@@ -9,11 +9,18 @@
import com.whyc.dto.Response;
import com.whyc.mapper.DocUserMapper;
import com.whyc.pojo.DocUser;
import com.whyc.util.ActionUtil;
import com.whyc.util.RSAUtil;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.List;
@@ -94,4 +101,29 @@
        int bl=mapper.delete(wrapper);
        return new Response().setII(1,bl>0?true:false,bl,"删除返回");
    }
    public Response login(String name, String snId, HttpServletRequest request) {
        Response response = new Response();
        String[] dataArr = RSAUtil.decryptFrontP(snId, RSAUtil.fontSeparator);
        //验签md5
        if (!dataArr[1].equals(ActionUtil.EncryptionMD5(org.apache.commons.lang3.StringUtils.trim(dataArr[0])).toString())) {
            return response.set(1, false, "密码验签失败");
        }
        UsernamePasswordToken userToken = new UsernamePasswordToken(name, dataArr[0]);
        Subject subject = SecurityUtils.getSubject();
        try {
            subject.login(userToken);
        } catch (Exception e) {
            if(e instanceof UnknownAccountException){
                return response.set(1,false,"账号不存在");
            }
            return response.set(1,false,"密码错误");
        }
        //登录成功
        //Session存储当前用户及权限组列表
        DocUser userDB = (DocUser) subject.getPrincipal();
        userDB.setSnId(null);
        request.getSession().setAttribute("user", userDB);
        return response.setII(1,true, userDB,"登录成功");
    }
}
src/main/java/com/whyc/service/UserBridgeService.java
@@ -31,7 +31,7 @@
    public DocUser findPasswordByUserName(String userName) {
        DocUser userInf = null;
        QueryWrapper<DocUser> queryWrapper = Wrappers.query();
        queryWrapper.select("uId","uName","upassword","UKey_ID","uRole","uSex","uMobilephone","uEmail","uAddr","uDepartment","uBirthDay").eq("uName",userName);
        queryWrapper.select("id","name","sn_id","role_id").eq("name",userName);
        userInf = userMapper.selectOne(queryWrapper);
        return userInf==null?new DocUser(0L,"用户不存在"):userInf;