ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -54,7 +54,7 @@ AjaxResult ajax = AjaxResult.success(); // 生成令牌 String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid()); loginBody.getUuid(),loginBody.getApp()); ajax.put(Constants.TOKEN, token); return ajax; } ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -44,7 +44,6 @@ * * @author ruoyi */ @Api(tags = "用户信息") @RestController @RequestMapping("/system/user") public class SysUserController extends BaseController @@ -64,7 +63,7 @@ /** * 获取用户列表 */ @ApiOperation("获取用户列表") @ApiOperationSupport(includeParameters={"user.userId"}) @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/list") @@ -186,7 +185,6 @@ /** * 删除用户 */ @ApiOperation(value = "删除用户") @PreAuthorize("@ss.hasPermi('system:user:remove')") @Log(title = "用户管理", businessType = BusinessType.DELETE) @DeleteMapping("/{userIds}") ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
@@ -27,6 +27,20 @@ */ private String uuid; /** * 是否APP用户 */ private Boolean isApp; public Boolean getApp() { return isApp; } public void setApp(Boolean app) { isApp = app; } public String getUsername() { return username; ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
@@ -71,6 +71,19 @@ */ private SysUser user; /** * 是否app用户 */ private Boolean isApp; public Boolean getIsApp() { return isApp; } public void setIsApp(Boolean isApp) { this.isApp = isApp; } public String getUserId() { return userId; ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -95,7 +95,43 @@ getRongCloudToken(loginUser); return token; } public String login(String username, String password, String code, String uuid,Boolean isApp) { boolean captchaEnabled = configService.selectCaptchaEnabled(); // 验证码开关 if (captchaEnabled) { validateCaptcha(username, code, uuid); } // 用户验证 Authentication authentication = null; try { UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); AuthenticationContextHolder.setContext(authenticationToken); // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername authentication = authenticationManager.authenticate(authenticationToken); } catch (Exception e) { if (e instanceof BadCredentialsException) { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); throw new UserPasswordNotMatchException(); } else { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); throw new ServiceException(e.getMessage()); } } finally { AuthenticationContextHolder.clearContext(); } AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser.getUserId()); // 生成token if(StringUtils.isNotNull(isApp)) { loginUser.setIsApp(isApp); } String token = tokenService.createToken(loginUser); //获取融云token getRongCloudToken(loginUser); return token; } /** * 校验验证码 * ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
@@ -142,10 +142,22 @@ public void refreshToken(LoginUser loginUser) { loginUser.setLoginTime(System.currentTimeMillis()); loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); // 根据uuid将loginUser缓存 String userKey = getTokenKey(loginUser.getToken()); redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); if(StringUtils.isNull(loginUser.getIsApp())) { loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); // 根据uuid将loginUser缓存 String userKey = getTokenKey(loginUser.getToken()); redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); } else { loginUser.setExpireTime(loginUser.getLoginTime() + 365*24*60 * MILLIS_MINUTE); // 根据uuid将loginUser缓存 String userKey = getTokenKey(loginUser.getToken()); redisCache.setCacheObject(userKey, loginUser, 365*24*60, TimeUnit.MINUTES); } } /**