From ad287e3d91353d74113e5d3d023078a50b3921a5 Mon Sep 17 00:00:00 2001 From: zlyx <1242874891@qq.com> Date: Mon, 26 Jun 2023 09:38:08 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0=20sys=5Fclient=20?= =?UTF-8?q?=E8=A1=A8=E5=AD=97=E6=AE=B5=E4=BB=A5=E5=8F=8A=20sql,=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AE=BE=E5=A4=87=E7=B1=BB=E5=9E=8B=20device?= =?UTF-8?q?=5Ftype,=20activity=5Ftimeout=20=E6=94=B9=E4=B8=BA=20active=5Ft?= =?UTF-8?q?imeout=20;=20refactor=20=E9=87=8D=E6=9E=84=20IAuthStrategy#logi?= =?UTF-8?q?n=20=E5=A2=9E=E5=8A=A0=E6=96=B9=E6=B3=95=E5=8F=82=E6=95=B0=20cl?= =?UTF-8?q?ient=20;=20refactor=20=E9=87=8D=E6=9E=84=20LoginHelper#loginByD?= =?UTF-8?q?evice=20=E5=A2=9E=E5=8A=A0=E6=96=B9=E6=B3=95=E5=8F=82=E6=95=B0?= =?UTF-8?q?=20deviceType,=20activeTimeout,=20timeout,=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=9B=B8=E5=BA=94=E6=96=B9=E6=B3=95=E8=B0=83=E7=94=A8=20;=20de?= =?UTF-8?q?lete=20=E5=88=A0=E9=99=A4=20SysLoginService=20=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E5=A4=9A=E4=BD=99=E7=9A=84=E7=AD=96=E7=95=A5=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=96=B9=E6=B3=95=20;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/AuthController.java | 2 +- .../dromara/web/service/IAuthStrategy.java | 9 +- .../dromara/web/service/SysLoginService.java | 106 ++---------------- .../web/service/impl/EmailAuthStrategy.java | 6 +- .../service/impl/PasswordAuthStrategy.java | 6 +- .../web/service/impl/SmsAuthStrategy.java | 6 +- .../web/service/impl/XcxAuthStrategy.java | 6 +- .../common/satoken/utils/LoginHelper.java | 22 ++-- .../org/dromara/system/domain/SysClient.java | 7 +- .../dromara/system/domain/bo/SysClientBo.java | 7 +- .../dromara/system/domain/vo/SysClientVo.java | 7 +- script/sql/oracle/oracle_ry_vue_5.X.sql | 10 +- script/sql/postgres/postgres_ry_vue_5.X.sql | 10 +- script/sql/ry_vue_5.X.sql | 7 +- script/sql/sqlserver/sqlserver_ry_vue_5.X.sql | 15 ++- 15 files changed, 80 insertions(+), 146 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index 79b3c83b9..9032d2768 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -83,7 +83,7 @@ public class AuthController { // 校验租户 loginService.checkTenant(loginBody.getTenantId()); // 登录 - return R.ok(IAuthStrategy.login(loginBody)); + return R.ok(IAuthStrategy.login(loginBody, client)); } /** diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/IAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/IAuthStrategy.java index 771e5984d..690f74024 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/IAuthStrategy.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/IAuthStrategy.java @@ -4,6 +4,7 @@ package org.dromara.web.service; import org.dromara.common.core.domain.model.LoginBody; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.SpringUtils; +import org.dromara.system.domain.SysClient; import org.dromara.web.domain.vo.LoginVo; /** @@ -18,7 +19,7 @@ public interface IAuthStrategy { /** * 登录 */ - static LoginVo login(LoginBody loginBody) { + static LoginVo login(LoginBody loginBody, SysClient client) { // 授权类型和客户端id String clientId = loginBody.getClientId(); String grantType = loginBody.getGrantType(); @@ -28,7 +29,7 @@ public interface IAuthStrategy { } IAuthStrategy instance = SpringUtils.getBean(beanName); instance.validate(loginBody); - return instance.login(clientId, loginBody); + return instance.login(clientId, loginBody, client); } /** @@ -37,8 +38,8 @@ public interface IAuthStrategy { void validate(LoginBody loginBody); /** - * 参数校验 + * 登录 */ - LoginVo login(String clientId, LoginBody loginBody); + LoginVo login(String clientId, LoginBody loginBody, SysClient client); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java index 53a938c5b..2a4ed8605 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java @@ -19,8 +19,6 @@ import org.dromara.common.core.enums.DeviceType; import org.dromara.common.core.enums.LoginType; import org.dromara.common.core.enums.TenantStatus; import org.dromara.common.core.enums.UserStatus; -import org.dromara.common.core.exception.user.CaptchaException; -import org.dromara.common.core.exception.user.CaptchaExpireException; import org.dromara.common.core.exception.user.UserException; import org.dromara.common.core.utils.*; import org.dromara.common.log.event.LogininforEvent; @@ -33,7 +31,6 @@ import org.dromara.system.domain.bo.SysSocialBo; import org.dromara.system.domain.vo.SysSocialVo; import org.dromara.system.domain.vo.SysTenantVo; import org.dromara.system.domain.vo.SysUserVo; -import org.dromara.system.mapper.SysClientMapper; import org.dromara.system.mapper.SysUserMapper; import org.dromara.system.service.ISysPermissionService; import org.dromara.system.service.ISysSocialService; @@ -63,11 +60,16 @@ public class SysLoginService { @Value("${user.password.lockTime}") private Integer lockTime; + @Value("sa-token.active-timeout") + private Long activeTimeout; + + @Value("sa-token.timeout") + private Long timeout; + private final ISysTenantService tenantService; private final ISysPermissionService permissionService; private final ISysSocialService sysSocialService; private final SysUserMapper userMapper; - private final SysClientMapper clientMapper; /** * 社交登录 @@ -121,7 +123,7 @@ public class SysLoginService { private R loginAndRecord(String tenantId, String userName, AuthUser authUser) { checkTenant(tenantId); SysUserVo user = loadUserByUsername(tenantId, userName); - LoginHelper.loginByDevice(buildLoginUser(user), DeviceType.SOCIAL); + LoginHelper.loginByDevice(buildLoginUser(user), DeviceType.PC.getDevice(), activeTimeout, timeout); recordLogininfor(user.getTenantId(), userName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); recordLoginInfo(user.getUserId()); return R.ok(StpUtil.getTokenValue()); @@ -161,50 +163,6 @@ public class SysLoginService { SpringUtils.context().publishEvent(logininforEvent); } - /** - * 校验短信验证码 - */ - private boolean validateSmsCode(String tenantId, String phonenumber, String smsCode) { - String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + phonenumber); - if (StringUtils.isBlank(code)) { - recordLogininfor(tenantId, phonenumber, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); - throw new CaptchaExpireException(); - } - return code.equals(smsCode); - } - - /** - * 校验邮箱验证码 - */ - private boolean validateEmailCode(String tenantId, String email, String emailCode) { - String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + email); - if (StringUtils.isBlank(code)) { - recordLogininfor(tenantId, email, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); - throw new CaptchaExpireException(); - } - return code.equals(emailCode); - } - - /** - * 校验验证码 - * - * @param username 用户名 - * @param code 验证码 - * @param uuid 唯一标识 - */ - public void validateCaptcha(String tenantId, String username, String code, String uuid) { - String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + StringUtils.defaultString(uuid, ""); - String captcha = RedisUtils.getCacheObject(verifyKey); - RedisUtils.deleteObject(verifyKey); - if (captcha == null) { - recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); - throw new CaptchaExpireException(); - } - if (!code.equalsIgnoreCase(captcha)) { - recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")); - throw new CaptchaException(); - } - } private SysUserVo loadUserByUsername(String tenantId, String username) { SysUser user = userMapper.selectOne(new LambdaQueryWrapper() @@ -224,56 +182,6 @@ public class SysLoginService { return userMapper.selectUserByUserName(username); } - private SysUserVo loadUserByPhonenumber(String tenantId, String phonenumber) { - SysUser user = userMapper.selectOne(new LambdaQueryWrapper() - .select(SysUser::getPhonenumber, SysUser::getStatus) - .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) - .eq(SysUser::getPhonenumber, phonenumber)); - if (ObjectUtil.isNull(user)) { - log.info("登录用户:{} 不存在.", phonenumber); - throw new UserException("user.not.exists", phonenumber); - } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { - log.info("登录用户:{} 已被停用.", phonenumber); - throw new UserException("user.blocked", phonenumber); - } - if (TenantHelper.isEnable()) { - return userMapper.selectTenantUserByPhonenumber(phonenumber, tenantId); - } - return userMapper.selectUserByPhonenumber(phonenumber); - } - - private SysUserVo loadUserByEmail(String tenantId, String email) { - SysUser user = userMapper.selectOne(new LambdaQueryWrapper() - .select(SysUser::getEmail, SysUser::getStatus) - .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) - .eq(SysUser::getEmail, email)); - if (ObjectUtil.isNull(user)) { - log.info("登录用户:{} 不存在.", email); - throw new UserException("user.not.exists", email); - } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { - log.info("登录用户:{} 已被停用.", email); - throw new UserException("user.blocked", email); - } - if (TenantHelper.isEnable()) { - return userMapper.selectTenantUserByEmail(email, tenantId); - } - return userMapper.selectUserByEmail(email); - } - - private SysUserVo loadUserByOpenid(String openid) { - // 使用 openid 查询绑定用户 如未绑定用户 则根据业务自行处理 例如 创建默认用户 - // todo 自行实现 userService.selectUserByOpenid(openid); - SysUserVo user = new SysUserVo(); - if (ObjectUtil.isNull(user)) { - log.info("登录用户:{} 不存在.", openid); - // todo 用户不存在 业务逻辑自行实现 - } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { - log.info("登录用户:{} 已被停用.", openid); - // todo 用户已被停用 业务逻辑自行实现 - } - return user; - } - /** * 构建登录用户 */ diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java index be750e8aa..71fdbb5b2 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java @@ -9,7 +9,6 @@ import org.dromara.common.core.constant.Constants; import org.dromara.common.core.constant.GlobalConstants; import org.dromara.common.core.domain.model.LoginBody; import org.dromara.common.core.domain.model.LoginUser; -import org.dromara.common.core.enums.DeviceType; import org.dromara.common.core.enums.LoginType; import org.dromara.common.core.enums.UserStatus; import org.dromara.common.core.exception.user.CaptchaExpireException; @@ -21,6 +20,7 @@ import org.dromara.common.core.validate.auth.EmailGroup; import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.system.domain.SysClient; import org.dromara.system.domain.SysUser; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.mapper.SysUserMapper; @@ -48,7 +48,7 @@ public class EmailAuthStrategy implements IAuthStrategy { } @Override - public LoginVo login(String clientId, LoginBody loginBody) { + public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { String tenantId = loginBody.getTenantId(); String email = loginBody.getEmail(); String emailCode = loginBody.getEmailCode(); @@ -60,7 +60,7 @@ public class EmailAuthStrategy implements IAuthStrategy { // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了 LoginUser loginUser = loginService.buildLoginUser(user); // 生成token - LoginHelper.loginByDevice(loginUser, DeviceType.APP); + LoginHelper.loginByDevice(loginUser, client.getDeviceType(), client.getActiveTimeout(), client.getTimeout()); loginService.recordLogininfor(loginUser.getTenantId(), user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); loginService.recordLoginInfo(user.getUserId()); diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java index eefd9dceb..aea957cf1 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java @@ -10,7 +10,6 @@ import org.dromara.common.core.constant.Constants; import org.dromara.common.core.constant.GlobalConstants; import org.dromara.common.core.domain.model.LoginBody; import org.dromara.common.core.domain.model.LoginUser; -import org.dromara.common.core.enums.DeviceType; import org.dromara.common.core.enums.LoginType; import org.dromara.common.core.enums.UserStatus; import org.dromara.common.core.exception.user.CaptchaException; @@ -24,6 +23,7 @@ import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.web.config.properties.CaptchaProperties; +import org.dromara.system.domain.SysClient; import org.dromara.system.domain.SysUser; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.mapper.SysUserMapper; @@ -52,7 +52,7 @@ public class PasswordAuthStrategy implements IAuthStrategy { } @Override - public LoginVo login(String clientId, LoginBody loginBody) { + public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { String tenantId = loginBody.getTenantId(); String username = loginBody.getUsername(); String password = loginBody.getPassword(); @@ -70,7 +70,7 @@ public class PasswordAuthStrategy implements IAuthStrategy { // 此处可根据登录用户的数据不同 自行创建 loginUser LoginUser loginUser = loginService.buildLoginUser(user); // 生成token - LoginHelper.loginByDevice(loginUser, DeviceType.PC); + LoginHelper.loginByDevice(loginUser, client.getDeviceType(), client.getActiveTimeout(), client.getTimeout()); loginService.recordLogininfor(loginUser.getTenantId(), username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); loginService.recordLoginInfo(user.getUserId()); diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java index c1f742571..d750ef88e 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java @@ -9,7 +9,6 @@ import org.dromara.common.core.constant.Constants; import org.dromara.common.core.constant.GlobalConstants; import org.dromara.common.core.domain.model.LoginBody; import org.dromara.common.core.domain.model.LoginUser; -import org.dromara.common.core.enums.DeviceType; import org.dromara.common.core.enums.LoginType; import org.dromara.common.core.enums.UserStatus; import org.dromara.common.core.exception.user.CaptchaExpireException; @@ -21,6 +20,7 @@ import org.dromara.common.core.validate.auth.SmsGroup; import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.system.domain.SysClient; import org.dromara.system.domain.SysUser; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.mapper.SysUserMapper; @@ -48,7 +48,7 @@ public class SmsAuthStrategy implements IAuthStrategy { } @Override - public LoginVo login(String clientId, LoginBody loginBody) { + public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { String tenantId = loginBody.getTenantId(); String phonenumber = loginBody.getPhonenumber(); String smsCode = loginBody.getSmsCode(); @@ -60,7 +60,7 @@ public class SmsAuthStrategy implements IAuthStrategy { // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了 LoginUser loginUser = loginService.buildLoginUser(user); // 生成token - LoginHelper.loginByDevice(loginUser, DeviceType.APP); + LoginHelper.loginByDevice(loginUser, client.getDeviceType(), client.getActiveTimeout(), client.getTimeout()); loginService.recordLogininfor(loginUser.getTenantId(), user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); loginService.recordLoginInfo(user.getUserId()); diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java index 984d91fdb..204bf966f 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java @@ -7,12 +7,12 @@ import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.Constants; import org.dromara.common.core.domain.model.LoginBody; import org.dromara.common.core.domain.model.XcxLoginUser; -import org.dromara.common.core.enums.DeviceType; import org.dromara.common.core.enums.UserStatus; import org.dromara.common.core.utils.MessageUtils; import org.dromara.common.core.utils.ValidatorUtils; import org.dromara.common.core.validate.auth.WechatGroup; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.domain.SysClient; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.web.domain.vo.LoginVo; import org.dromara.web.service.IAuthStrategy; @@ -37,7 +37,7 @@ public class XcxAuthStrategy implements IAuthStrategy { } @Override - public LoginVo login(String clientId, LoginBody loginBody) { + public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { // xcxCode 为 小程序调用 wx.login 授权后获取 String xcxCode = loginBody.getXcxCode(); // todo 以下自行实现 @@ -54,7 +54,7 @@ public class XcxAuthStrategy implements IAuthStrategy { loginUser.setUserType(user.getUserType()); loginUser.setOpenid(openid); // 生成token - LoginHelper.loginByDevice(loginUser, DeviceType.XCX); + LoginHelper.loginByDevice(loginUser, client.getDeviceType(), client.getActiveTimeout(), client.getTimeout()); loginService.recordLogininfor(loginUser.getTenantId(), user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); loginService.recordLoginInfo(user.getUserId()); diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java index 99bd6b588..50f7cebfd 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java @@ -10,10 +10,10 @@ import cn.hutool.core.util.ObjectUtil; import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.domain.model.LoginUser; -import org.dromara.common.core.enums.DeviceType; import org.dromara.common.core.enums.UserType; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.dromara.common.core.utils.StringUtils; import java.util.Set; @@ -42,32 +42,30 @@ public class LoginHelper { * @param loginUser 登录用户信息 */ public static void login(LoginUser loginUser) { - loginByDevice(loginUser, null); + loginByDevice(loginUser, null, 1800L, 604800L); } /** * 登录系统 基于 设备类型 * 针对相同用户体系不同设备 * - * @param loginUser 登录用户信息 + * @param loginUser 登录用户信息 + * @param deviceType 设备类型 + * @param activeTimeout token活跃超时时间 + * @param timeout token固定超时时间 */ - public static void loginByDevice(LoginUser loginUser, DeviceType deviceType) { + public static void loginByDevice(LoginUser loginUser, String deviceType, Long activeTimeout, Long timeout) { SaStorage storage = SaHolder.getStorage(); storage.set(LOGIN_USER_KEY, loginUser); storage.set(TENANT_KEY, loginUser.getTenantId()); storage.set(USER_KEY, loginUser.getUserId()); SaLoginModel model = new SaLoginModel(); - if (ObjectUtil.isNotNull(deviceType)) { - model.setDevice(deviceType.getDevice()); + if (StringUtils.isNotEmpty(deviceType)) { + model.setDevice(deviceType); } // 自定义分配 不同用户体系 不同 token 授权时间 不设置默认走全局 yml 配置 // 例如: 后台用户30分钟过期 app用户1天过期 -// UserType userType = UserType.getUserType(loginUser.getUserType()); -// if (userType == UserType.SYS_USER) { -// model.setTimeout(86400).setActiveTimeout(1800); -// } else if (userType == UserType.APP_USER) { -// model.setTimeout(86400).setActiveTimeout(1800); -// } + model.setTimeout(timeout).setActiveTimeout(activeTimeout); StpUtil.stpLogic.setLoginType(loginUser.getUserType()) .login(loginUser.getLoginId(), model.setExtra(TENANT_KEY, loginUser.getTenantId()) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysClient.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysClient.java index e76846692..0f681be08 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysClient.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysClient.java @@ -47,10 +47,15 @@ public class SysClient extends BaseEntity { */ private String grantType; + /** + * 设备类型 + */ + private String deviceType; + /** * token活跃超时时间 */ - private Long activityTimeout; + private Long activeTimeout; /** * token固定超时时间 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysClientBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysClientBo.java index 4a5de0cb8..e5f5ffa3f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysClientBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysClientBo.java @@ -56,10 +56,15 @@ public class SysClientBo extends BaseEntity { */ private String grantType; + /** + * 设备类型 + */ + private String deviceType; + /** * token活跃超时时间 */ - private Long activityTimeout; + private Long activeTimeout; /** * token固定超时时间 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java index b3ca8a304..34f24eb36 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java @@ -62,11 +62,16 @@ public class SysClientVo implements Serializable { */ private String grantType; + /** + * 设备类型 + */ + private String deviceType; + /** * token活跃超时时间 */ @ExcelProperty(value = "token活跃超时时间") - private Long activityTimeout; + private Long activeTimeout; /** * token固定超时时间 diff --git a/script/sql/oracle/oracle_ry_vue_5.X.sql b/script/sql/oracle/oracle_ry_vue_5.X.sql index 1a112a42c..dab75730a 100644 --- a/script/sql/oracle/oracle_ry_vue_5.X.sql +++ b/script/sql/oracle/oracle_ry_vue_5.X.sql @@ -1204,7 +1204,8 @@ create table sys_client ( client_key varchar(32) default null, client_secret varchar(255) default null, grant_type varchar(255) default null, - activity_timeout number(11) default 1800, + device_type varchar(32) default null, + active_timeout number(11) default 1800, timeout number(11) default 604800, status char(1) default '0', del_flag char(1) default '0', @@ -1223,7 +1224,8 @@ comment on column sys_client.client_id is '客户端id'; comment on column sys_client.client_key is '客户端key'; comment on column sys_client.client_secret is '客户端秘钥'; comment on column sys_client.grant_type is '授权类型'; -comment on column sys_client.activity_timeout is 'token活跃超时时间'; +comment on column sys_client.device_type is '设备类型'; +comment on column sys_client.active_timeout is 'token活跃超时时间'; comment on column sys_client.timeout is 'token固定超时'; comment on column sys_client.status is '状态(0正常 1停用)'; comment on column sys_client.del_flag is '删除标志(0代表存在 2代表删除)'; @@ -1233,8 +1235,8 @@ comment on column sys_client.create_time is '创建时间'; comment on column sys_client.update_by is '更新者'; comment on column sys_client.update_time is '更新时间'; -insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 1800, 604800, 0, 0, 103, 1, sysdate, 1, sysdate); -insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 1800, 604800, 0, 0, 103, 1, sysdate, 1, sysdate); +insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 'pc', 1800, 604800, 0, 0, 103, 1, sysdate, 1, sysdate); +insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 'app', 1800, 604800, 0, 0, 103, 1, sysdate, 1, sysdate); -- ---------------------------- diff --git a/script/sql/postgres/postgres_ry_vue_5.X.sql b/script/sql/postgres/postgres_ry_vue_5.X.sql index 14a91b3bd..744102e6f 100644 --- a/script/sql/postgres/postgres_ry_vue_5.X.sql +++ b/script/sql/postgres/postgres_ry_vue_5.X.sql @@ -1226,7 +1226,8 @@ create table sys_client ( client_key varchar(32) ''::varchar, client_secret varchar(255) ''::varchar, grant_type varchar(255) ''::varchar, - activity_timeout int4 default 1800, + device_type varchar(32) ''::varchar, + active_timeout int4 default 1800, timeout int4 default 604800, status char(1) default '0'::bpchar, del_flag char(1) default '0'::bpchar, @@ -1244,7 +1245,8 @@ comment on column sys_client.client_id is '客户端id'; comment on column sys_client.client_key is '客户端key'; comment on column sys_client.client_secret is '客户端秘钥'; comment on column sys_client.grant_type is '授权类型'; -comment on column sys_client.activity_timeout is 'token活跃超时时间'; +comment on column sys_client.device_type is '设备类型'; +comment on column sys_client.active_timeout is 'token活跃超时时间'; comment on column sys_client.timeout is 'token固定超时'; comment on column sys_client.status is '状态(0正常 1停用)'; comment on column sys_client.del_flag is '删除标志(0代表存在 2代表删除)'; @@ -1254,8 +1256,8 @@ comment on column sys_client.create_time is '创建时间'; comment on column sys_client.update_by is '更新者'; comment on column sys_client.update_time is '更新时间'; -insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 1800, 604800, 0, 0, 103, 1, now(), 1, now()); -insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 1800, 604800, 0, 0, 103, 1, now(), 1, now()); +insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 'pc', 1800, 604800, 0, 0, 103, 1, now(), 1, now()); +insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 'app', 1800, 604800, 0, 0, 103, 1, now(), 1, now()); -- 字符串自动转时间 避免框架时间查询报错问题 create or replace function cast_varchar_to_timestamp(varchar) returns timestamptz as $$ diff --git a/script/sql/ry_vue_5.X.sql b/script/sql/ry_vue_5.X.sql index ec2c9bfd8..5060d5714 100644 --- a/script/sql/ry_vue_5.X.sql +++ b/script/sql/ry_vue_5.X.sql @@ -861,7 +861,8 @@ create table sys_client ( client_key varchar(32) default null comment '客户端key', client_secret varchar(255) default null comment '客户端秘钥', grant_type varchar(255) default null comment '授权类型', - activity_timeout int(11) default 1800 comment 'token活跃超时时间', + device_type varchar(32) default null comment '设备类型', + active_timeout int(11) default 1800 comment 'token活跃超时时间', timeout int(11) default 604800 comment 'token固定超时', status char(1) default '0' comment '状态(0正常 1停用)', del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', @@ -873,5 +874,5 @@ create table sys_client ( primary key (id) ) engine=innodb comment='系统授权表'; -insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 1800, 604800, 0, 0, 103, 1, sysdate(), 1, sysdate()); -insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 1800, 604800, 0, 0, 103, 1, sysdate(), 1, sysdate()); +insert into sys_client values (1, 'e5cd7e4891bf95d1d19206ce24a7b32e', 'pc', 'pc123', 'password,social', 'pc', 1800, 604800, 0, 0, 103, 1, sysdate(), 1, sysdate()); +insert into sys_client values (2, '428a8310cd442757ae699df5d894f051', 'app', 'app123', 'password,sms,social', 'app', 1800, 604800, 0, 0, 103, 1, sysdate(), 1, sysdate()); diff --git a/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql b/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql index faa0b5819..b2e6676ca 100644 --- a/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql +++ b/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql @@ -3083,7 +3083,8 @@ CREATE TABLE sys_client client_key nvarchar(255) DEFAULT '' NULL, client_secret nvarchar(255) DEFAULT '' NULL, grant_type nvarchar(255) DEFAULT '' NULL, - activity_timeout int DEFAULT ((1800)) NULL, + device_type nvarchar(32) DEFAULT '' NULL, + active_timeout int DEFAULT ((1800)) NULL, timeout int DEFAULT ((604800)) NULL, status nchar(1) DEFAULT ('0') NULL, del_flag nchar(1) DEFAULT ('0') NULL, @@ -3130,10 +3131,16 @@ EXEC sp_addextendedproperty 'COLUMN', N'grant_type' GO EXEC sp_addextendedproperty +'MS_Description', N'设备类型', +'SCHEMA', N'dbo', +'TABLE', N'sys_client', +'COLUMN', N'device_type' +GO +EXEC sp_addextendedproperty 'MS_Description', N'token活跃超时时间', 'SCHEMA', N'dbo', 'TABLE', N'sys_client', -'COLUMN', N'activity_timeout' +'COLUMN', N'active_timeout' GO EXEC sp_addextendedproperty 'MS_Description', N'token固定超时', @@ -3189,7 +3196,7 @@ EXEC sp_addextendedproperty 'TABLE', N'sys_client' GO -INSERT INTO sys_client VALUES (N'1', N'e5cd7e4891bf95d1d19206ce24a7b32e', N'pc', N'pc123', N'password,social', 1800, 604800, N'0', N'0', 103, 1, getdate(), 1, getdate()) +INSERT INTO sys_client VALUES (N'1', N'e5cd7e4891bf95d1d19206ce24a7b32e', N'pc', N'pc123', N'password,social', N'pc', 1800, 604800, N'0', N'0', 103, 1, getdate(), 1, getdate()) GO -INSERT INTO sys_client VALUES (N'2', N'428a8310cd442757ae699df5d894f051', N'app', N'app123', N'password,sms,social', 1800, 604800, N'0', N'0', 103, 1, getdate(), 1, getdate()) +INSERT INTO sys_client VALUES (N'2', N'428a8310cd442757ae699df5d894f051', N'app', N'app123', N'password,sms,social', N'app', 1800, 604800, N'0', N'0', 103, 1, getdate(), 1, getdate()) GO