caiaa vor 1 Jahr
Ursprung
Commit
417ed9ecbc

+ 20 - 13
src/main/java/com/dragon/tj/portal/auth/controller/SsoController.java

@@ -3,20 +3,22 @@ package com.dragon.tj.portal.auth.controller;
 import com.dragon.tj.portal.auth.model.LoginUser;
 import com.dragon.tj.portal.auth.service.TokenService;
 import com.dragon.tj.portal.auth.web.entity.SysUser;
+import com.dragon.tj.portal.auth.web.service.SysUserService;
 import com.dragon.tj.portal.common.base.R;
 import com.dragon.tj.portal.common.enums.message.MessageInfoErrorEnums;
 import com.dragon.tj.portal.component.exception.message.MessageInfoException;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
 import org.springframework.web.bind.annotation.GetMapping;
 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.HttpServletResponse;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
 
 /**
  * <p>
@@ -32,16 +34,21 @@ public class SsoController {
 
     @Autowired
     private TokenService tokenService;
+    @Autowired
+    private SysUserService sysUserService;
+
 
     @GetMapping("/login")
-    public R login(HttpServletResponse response) {
-        SysUser sysUser = new SysUser();
-        sysUser.setIdcard("120222197001010002");
-        sysUser.setName("李四");
-        sysUser.setOrgCode("120000450200");
-        sysUser.setOrgName("服务实战值班岛");
-        List<String> perms = Arrays.asList("gzt", "yyzx");
+    public R login(@RequestParam(required = false) String idCard, HttpServletRequest request) {
+        if (StringUtils.isBlank(idCard)) {
+            idCard = "120222197001010002";
+        }
+        SysUser sysUser = sysUserService.getUserById(idCard);
+        List<String> perms = Arrays.asList("gzt", "yyzx", "ywzx", "xxgl", "rjxz", "rzcx", "cjwt");
         LoginUser loginUser = new LoginUser(sysUser.getIdcard(), sysUser.getOrgCode(), sysUser, new HashSet<>(perms));
+        UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
+        authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
+        SecurityContextHolder.getContext().setAuthentication(authenticationToken);
         String token = tokenService.createToken(loginUser);
         Map<String, String> data = new HashMap<>();
         data.put("token", token);

+ 12 - 13
src/main/java/com/dragon/tj/portal/auth/controller/UserController.java

@@ -22,11 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 
 @RestController
 @RequestMapping("/user")
@@ -58,16 +54,19 @@ public class UserController {
             userInfo.put("loginUserNum", String.valueOf(keys.size()));
 
             // 获取上次登录信息
-            SysLog lastLoginLog = sysLogService.getOne(Wrappers.<SysLog>query().lambda()
-                    .eq(SysLog::getCreateBy, loginUser.getIdCard())
-                    .eq(SysLog::getModuleType, ModuleEnum.LOGIN.getCode())
-                    .orderByDesc(SysLog::getCreateTime));
-            if (Objects.nonNull(lastLoginLog)) {
-                userInfo.put("lastLoginTime", DateTimeFormatterConstant.FORMATTER0.format(lastLoginLog.getCreateTime()));
-                userInfo.put("lastLoginIp", lastLoginLog.getRemoteAddr());
+            List<SysLog> sysLogs = sysLogService.list(
+                    Wrappers.<SysLog>query().lambda()
+                            .eq(SysLog::getCreateBy, loginUser.getIdCard())
+                            .eq(SysLog::getModuleType, ModuleEnum.LOGIN.getCode())
+                            .orderByDesc(SysLog::getCreateTime)
+                            .last("LIMIT 2")
+            );
+            if (Objects.nonNull(sysLogs) && sysLogs.size() == 2) {
+                userInfo.put("lastLoginTime", DateTimeFormatterConstant.FORMATTER0.format(sysLogs.get(1).getCreateTime()));
+                userInfo.put("lastLoginIp", sysLogs.get(1).getRemoteAddr());
             }
         } catch (Exception e) {
-
+            LOGGER.error("获取用户[{}]上次登录信息失败", loginUser.getIdCard(), e);
         }
 
         Map<String, Object> data = new HashMap<>(2);

+ 2 - 2
src/main/java/com/dragon/tj/portal/common/enums/log/ModuleEnum.java

@@ -39,8 +39,8 @@ public enum ModuleEnum {
     ISSUE_UPDATE("6003", "问题添加"),
     ISSUE_QUERY("6004", "问题查询"),
 
-    LOGIN("9999", "登录")
-    ;
+    LOGIN("9999", "登录"),
+    LOGOUT("9998", "退出登录");
 
     private final String code;
     private final String desc;

+ 2 - 1
src/main/java/com/dragon/tj/portal/component/log/aspect/SysLogAspect.java

@@ -22,6 +22,7 @@ package com.dragon.tj.portal.component.log.aspect;
 import com.alibaba.fastjson.JSON;
 import com.dragon.tj.portal.auth.model.LoginUser;
 import com.dragon.tj.portal.auth.service.TokenService;
+import com.dragon.tj.portal.auth.util.SecurityUtils;
 import com.dragon.tj.portal.component.log.annotation.SysLog;
 import com.dragon.tj.portal.component.log.dto.SysLogDTO;
 import com.dragon.tj.portal.component.log.event.SysLogEvent;
@@ -75,7 +76,7 @@ public class SysLogAspect {
         log.debug("[类名]:{},[方法]:{}", strClassName, strMethodName);
 
         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
-        LoginUser loginUser = tokenService.getLoginUser(request);
+        LoginUser loginUser = SecurityUtils.getLoginUser();
         String createBy = "admin";
         String createUser = "admin";
         if (Objects.nonNull(loginUser)) {