ruoyi-admin/pom.xml
@@ -36,6 +36,11 @@ <artifactId>ruoyi-framework</artifactId> </dependency> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-system</artifactId> </dependency> <!-- 宿¶ä»»å¡--> <dependency> <groupId>com.ruoyi</groupId> ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -6,8 +6,8 @@ import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginBody; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.framework.web.service.SysPermissionService; import com.ruoyi.system.service.SysLoginService; import com.ruoyi.system.service.SysPermissionService; import com.ruoyi.system.service.ISysMenuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
@@ -7,9 +7,9 @@ import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.domain.SysOss; import com.ruoyi.system.service.ISysOssService; import com.ruoyi.system.service.ISysUserService; ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java
@@ -4,7 +4,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.model.RegisterBody; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.service.SysRegisterService; import com.ruoyi.system.service.SysRegisterService; import com.ruoyi.system.service.ISysConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
@@ -9,13 +9,13 @@ import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.web.service.SysPermissionService; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.SysPermissionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,107 @@ package com.ruoyi.common.core.domain.dto; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; /** * æä½æ¥å¿è®°å½è¡¨ oper_log * * @author ruoyi */ @Data @NoArgsConstructor @Accessors(chain = true) public class OperLogDTO implements Serializable { private static final long serialVersionUID = 1L; /** * æ¥å¿ä¸»é® */ private Long operId; /** * æä½æ¨¡å */ private String title; /** * ä¸å¡ç±»åï¼0å ¶å® 1æ°å¢ 2ä¿®æ¹ 3å é¤ï¼ */ private Integer businessType; /** * ä¸å¡ç±»åæ°ç» */ private Integer[] businessTypes; /** * è¯·æ±æ¹æ³ */ private String method; /** * è¯·æ±æ¹å¼ */ private String requestMethod; /** * æä½ç±»å«ï¼0å ¶å® 1åå°ç¨æ· 2ææºç«¯ç¨æ·ï¼ */ private Integer operatorType; /** * æä½äººå */ private String operName; /** * é¨é¨åç§° */ private String deptName; /** * 请æ±url */ private String operUrl; /** * æä½å°å */ private String operIp; /** * æä½å°ç¹ */ private String operLocation; /** * 请æ±åæ° */ private String operParam; /** * è¿ååæ° */ private String jsonResult; /** * æä½ç¶æï¼0æ£å¸¸ 1å¼å¸¸ï¼ */ private Integer status; /** * éè¯¯æ¶æ¯ */ private String errorMsg; /** * æä½æ¶é´ */ private Date operTime; } ruoyi-common/src/main/java/com/ruoyi/common/core/service/LogininforService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.common.core.service; import javax.servlet.http.HttpServletRequest; public interface LogininforService { void recordLogininfor(String username, String status, String message, HttpServletRequest request, Object... args); } ruoyi-common/src/main/java/com/ruoyi/common/core/service/OperLogService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.common.core.service; import com.ruoyi.common.core.domain.dto.OperLogDTO; import org.springframework.scheduling.annotation.Async; public interface OperLogService { @Async void recordOper(OperLogDTO operLogDTO); } ruoyi-common/src/main/java/com/ruoyi/common/core/service/TokenService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,69 @@ package com.ruoyi.common.core.service; import com.ruoyi.common.core.domain.model.LoginUser; import javax.servlet.http.HttpServletRequest; /** * tokenéªè¯å¤ç * * @author Lion Li */ public interface TokenService { /** * è·åç¨æ·èº«ä»½ä¿¡æ¯ * * @return ç¨æ·ä¿¡æ¯ */ LoginUser getLoginUser(HttpServletRequest request); /** * è®¾ç½®ç¨æ·èº«ä»½ä¿¡æ¯ */ void setLoginUser(LoginUser loginUser); /** * å é¤ç¨æ·èº«ä»½ä¿¡æ¯ */ void delLoginUser(String token); /** * å建令ç * * @param loginUser ç¨æ·ä¿¡æ¯ * @return 令ç */ String createToken(LoginUser loginUser); /** * éªè¯ä»¤çæææï¼ç¸å·®ä¸è¶³20åéï¼èªå¨å·æ°ç¼å * * @param loginUser * @return 令ç */ void verifyToken(LoginUser loginUser); /** * å·æ°ä»¤çæææ * * @param loginUser ç»å½ä¿¡æ¯ */ void refreshToken(LoginUser loginUser); /** * è®¾ç½®ç¨æ·ä»£çä¿¡æ¯ * * @param loginUser ç»å½ä¿¡æ¯ */ void setUserAgent(LoginUser loginUser); /** * ä»ä»¤çä¸è·åç¨æ·å * * @param token 令ç * @return ç¨æ·å */ String getUsernameFromToken(String token); } ruoyi-common/src/main/java/com/ruoyi/common/properties/TokenProperties.java
ÎļþÃû´Ó ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/TokenProperties.java ÐÞ¸Ä @@ -1,4 +1,4 @@ package com.ruoyi.framework.config.properties; package com.ruoyi.common.properties; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; ruoyi-framework/pom.xml
@@ -64,7 +64,7 @@ <!-- ç³»ç»æ¨¡å--> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-system</artifactId> <artifactId>ruoyi-common</artifactId> </dependency> </dependencies> ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
@@ -4,13 +4,14 @@ import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.BusinessStatus; import com.ruoyi.common.enums.HttpMethod; import com.ruoyi.common.core.service.OperLogService; import com.ruoyi.common.core.domain.dto.OperLogDTO; import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.framework.web.service.AsyncService; import com.ruoyi.system.domain.SysOperLog; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.AfterReturning; @@ -18,8 +19,6 @@ import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.validation.BindingResult; import org.springframework.web.multipart.MultipartFile; @@ -36,11 +35,11 @@ * * @author ruoyi */ @Slf4j @Aspect @Component public class LogAspect { private static final Logger log = LoggerFactory.getLogger(LogAspect.class); // é ç½®ç»å ¥ç¹ @Pointcut("@annotation(com.ruoyi.common.annotation.Log)") @@ -86,7 +85,7 @@ LoginUser loginUser = SecurityUtils.getLoginUser(); // *========æ°æ®åºæ¥å¿=========*// SysOperLog operLog = new SysOperLog(); OperLogDTO operLog = new OperLogDTO(); operLog.setStatus(BusinessStatus.SUCCESS.ordinal()); // 请æ±çå°å String ip = ServletUtils.getClientIP(); @@ -111,7 +110,7 @@ // å¤ç设置注解ä¸çåæ° getControllerMethodDescription(joinPoint, controllerLog, operLog, jsonResult); // ä¿åæ°æ®åº SpringUtils.getBean(AsyncService.class).recordOper(operLog); SpringUtils.getBean(OperLogService.class).recordOper(operLog); } catch (Exception exp) { @@ -129,7 +128,7 @@ * @param operLog æä½æ¥å¿ * @throws Exception */ public void getControllerMethodDescription(JoinPoint joinPoint, Log log, SysOperLog operLog, Object jsonResult) throws Exception public void getControllerMethodDescription(JoinPoint joinPoint, Log log, OperLogDTO operLog, Object jsonResult) throws Exception { // 设置actionå¨ä½ operLog.setBusinessType(log.businessType().ordinal()); @@ -156,7 +155,7 @@ * @param operLog æä½æ¥å¿ * @throws Exception å¼å¸¸ */ private void setRequestValue(JoinPoint joinPoint, SysOperLog operLog) throws Exception private void setRequestValue(JoinPoint joinPoint, OperLogDTO operLog) throws Exception { String requestMethod = operLog.getRequestMethod(); if (HttpMethod.PUT.name().equals(requestMethod) || HttpMethod.POST.name().equals(requestMethod)) ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
@@ -9,7 +9,7 @@ import com.ruoyi.common.utils.RedisUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.config.properties.RepeatSubmitProperties; import com.ruoyi.framework.config.properties.TokenProperties; import com.ruoyi.common.properties.TokenProperties; import com.ruoyi.framework.interceptor.RepeatSubmitInterceptor; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
@@ -1,9 +1,9 @@ package com.ruoyi.framework.security.filter; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.service.TokenService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java
@@ -4,11 +4,11 @@ import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.service.LogininforService; import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.service.AsyncService; import com.ruoyi.framework.web.service.TokenService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.core.Authentication; @@ -31,7 +31,7 @@ private TokenService tokenService; @Autowired private AsyncService asyncService; private LogininforService asyncService; /** * éåºå¤ç ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AsyncService.java
ÎļþÒÑɾ³ý ruoyi-system/src/main/java/com/ruoyi/system/service/PermissionService.java
ÎļþÃû´Ó ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java ÐÞ¸Ä @@ -1,4 +1,4 @@ package com.ruoyi.framework.web.service; package com.ruoyi.system.service; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.model.LoginUser; ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
ÎļþÃû´Ó ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java ÐÞ¸Ä @@ -1,8 +1,10 @@ package com.ruoyi.framework.web.service; package com.ruoyi.system.service; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.service.LogininforService; import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.CaptchaExpireException; @@ -11,8 +13,6 @@ import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.RedisUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; @@ -44,7 +44,7 @@ private ISysConfigService configService; @Autowired private AsyncService asyncService; private LogininforService asyncService; /** * ç»å½éªè¯ ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java
ÎļþÃû´Ó ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java ÐÞ¸Ä @@ -1,12 +1,11 @@ package com.ruoyi.framework.web.service; package com.ruoyi.system.service; import com.ruoyi.common.core.domain.entity.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.HashSet; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.system.service.ISysMenuService; import com.ruoyi.system.service.ISysRoleService; /** * ç¨æ·æéå¤ç ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java
ÎļþÃû´Ó ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java ÐÞ¸Ä @@ -1,14 +1,13 @@ package com.ruoyi.framework.web.service; package com.ruoyi.system.service; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.RegisterBody; import com.ruoyi.common.core.service.LogininforService; import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.CaptchaExpireException; import com.ruoyi.common.utils.*; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -27,7 +26,7 @@ private ISysConfigService configService; @Autowired private AsyncService asyncService; private LogininforService asyncService; /** * 注å ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
@@ -1,15 +1,24 @@ package com.ruoyi.system.service.impl; import cn.hutool.http.useragent.UserAgent; import cn.hutool.http.useragent.UserAgentUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.service.LogininforService; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.system.domain.SysLogininfor; import com.ruoyi.system.mapper.SysLogininforMapper; import com.ruoyi.system.service.ISysLogininforService; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -20,8 +29,62 @@ * * @author ruoyi */ @Slf4j @Service public class SysLogininforServiceImpl extends ServicePlusImpl<SysLogininforMapper, SysLogininfor, SysLogininfor> implements ISysLogininforService { public class SysLogininforServiceImpl extends ServicePlusImpl<SysLogininforMapper, SysLogininfor, SysLogininfor> implements ISysLogininforService, LogininforService { /** * è®°å½ç»å½ä¿¡æ¯ * * @param username ç¨æ·å * @param status ç¶æ * @param message æ¶æ¯ * @param args å表 */ @Async @Override public void recordLogininfor(final String username, final String status, final String message, HttpServletRequest request, final Object... args) { final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent")); final String ip = ServletUtils.getClientIP(request); String address = AddressUtils.getRealAddressByIP(ip); StringBuilder s = new StringBuilder(); s.append(getBlock(ip)); s.append(address); s.append(getBlock(username)); s.append(getBlock(status)); s.append(getBlock(message)); // æå°ä¿¡æ¯å°æ¥å¿ log.info(s.toString(), args); // è·å客æ·ç«¯æä½ç³»ç» String os = userAgent.getOs().getName(); // è·å客æ·ç«¯æµè§å¨ String browser = userAgent.getBrowser().getName(); // å°è£ 对象 SysLogininfor logininfor = new SysLogininfor(); logininfor.setUserName(username); logininfor.setIpaddr(ip); logininfor.setLoginLocation(address); logininfor.setBrowser(browser); logininfor.setOs(os); logininfor.setMsg(message); // æ¥å¿ç¶æ if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) { logininfor.setStatus(Constants.SUCCESS); } else if (Constants.LOGIN_FAIL.equals(status)) { logininfor.setStatus(Constants.FAIL); } // æå ¥æ°æ® insertLogininfor(logininfor); } private String getBlock(Object msg) { if (msg == null) { msg = ""; } return "[" + msg.toString() + "]"; } @Override public TableDataInfo<SysLogininfor> selectPageLogininforList(SysLogininfor logininfor) { ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
@@ -1,14 +1,19 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ArrayUtil; import com.ruoyi.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.service.OperLogService; import com.ruoyi.common.core.domain.dto.OperLogDTO; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.system.domain.SysOperLog; import com.ruoyi.system.mapper.SysOperLogMapper; import com.ruoyi.system.service.ISysOperLogService; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.Arrays; @@ -22,7 +27,21 @@ * @author ruoyi */ @Service public class SysOperLogServiceImpl extends ServicePlusImpl<SysOperLogMapper, SysOperLog, SysOperLog> implements ISysOperLogService { public class SysOperLogServiceImpl extends ServicePlusImpl<SysOperLogMapper, SysOperLog, SysOperLog> implements ISysOperLogService, OperLogService { /** * æä½æ¥å¿è®°å½ * * @param operLogDTO æä½æ¥å¿ä¿¡æ¯ */ @Async @Override public void recordOper(final OperLogDTO operLogDTO) { SysOperLog operLog = BeanUtil.toBean(operLogDTO, SysOperLog.class); // è¿ç¨æ¥è¯¢æä½å°ç¹ operLog.setOperLocation(AddressUtils.getRealAddressByIP(operLog.getOperIp())); insertOperlog(operLog); } @Override public TableDataInfo<SysOperLog> selectPageOperLogList(SysOperLog operLog) { ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java
ÎļþÃû´Ó ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java ÐÞ¸Ä @@ -1,15 +1,16 @@ package com.ruoyi.framework.web.service; package com.ruoyi.system.service.impl; import cn.hutool.core.util.IdUtil; import cn.hutool.http.useragent.UserAgent; import cn.hutool.http.useragent.UserAgentUtil; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.properties.TokenProperties; import com.ruoyi.common.utils.RedisUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.framework.config.properties.TokenProperties; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; @@ -27,7 +28,7 @@ * @author Lion Li */ @Component public class TokenService { public class TokenServiceImpl implements TokenService { protected static final long MILLIS_SECOND = 1000; ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java
ÎļþÃû´Ó ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java ÐÞ¸Ä @@ -1,28 +1,28 @@ package com.ruoyi.framework.web.service; package com.ruoyi.system.service.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.UserStatus; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.SysPermissionService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; /** * ç¨æ·éªè¯å¤ç * * @author ruoyi */ @Slf4j @Service public class UserDetailsServiceImpl implements UserDetailsService { private static final Logger log = LoggerFactory.getLogger(UserDetailsServiceImpl.class); @Autowired private ISysUserService userService;