package cn.stylefeng.roses.kernel.auth.api.expander; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.stylefeng.roses.kernel.config.api.context.ConfigContext; import java.util.ArrayList; import java.util.List; import static cn.stylefeng.roses.kernel.auth.api.constants.AuthConstants.*; /** * 权限相关配置快速获取 * * @author fengshuonan * @date 2020/10/17 16:10 */ public class AuthConfigExpander { /** * 获取不被权限控制的url * * @author fengshuonan * @date 2020/10/17 16:12 */ public static List getNoneSecurityConfig() { String noneSecurityUrls = ConfigContext.me().getSysConfigValueWithDefault("SYS_NONE_SECURITY_URLS", String.class, ""); if (StrUtil.isEmpty(noneSecurityUrls)) { return new ArrayList<>(); } else { return StrUtil.split(noneSecurityUrls, ','); } } /** * 用于auth校验的jwt的秘钥 * * @author fengshuonan * @date 2021/1/2 18:52 */ public static String getAuthJwtSecret() { String sysJwtSecret = ConfigContext.me().getConfigValueNullable("SYS_AUTH_JWT_SECRET", String.class); // 没配置就返回一个随机密码 if (sysJwtSecret == null) { return RandomUtil.randomString(20); } else { return sysJwtSecret; } } /** * 用于auth模块权限校验的jwt失效时间 *

* 这个时间也是“记住我”功能的过期时间,默认为7天 *

* 如果登录的时候开启了“记住我”,则用户7天内免登录 * * @author fengshuonan * @date 2021/1/2 18:53 */ public static Long getAuthJwtTimeoutSeconds() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_JWT_TIMEOUT_SECONDS", Long.class, DEFAULT_AUTH_JWT_TIMEOUT_SECONDS); } /** * 获取session过期时间,默认3600秒 *

* 在这个时段内不操作,会将用户踢下线,从新登陆 *

* 如果开启了记住我功能,在session过期后会从新创建session * * @author fengshuonan * @date 2020/10/20 9:32 */ public static Long getSessionExpiredSeconds() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_SESSION_EXPIRED_SECONDS", Long.class, 3600L); } /** * 获取单账号单端登录的开关 *

* 单账号单端登录为限制一个账号多个浏览器登录 * * @return true-开启单端限制,false-关闭单端限制 * @author fengshuonan * @date 2020/10/21 14:31 */ public static boolean getSingleAccountLoginFlag() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_SINGLE_ACCOUNT_LOGIN_FLAG", Boolean.class, false); } /** * 获取携带token的header头的名称 * * @author fengshuonan * @date 2020/10/22 14:11 */ public static String getAuthTokenHeaderName() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_HEADER_NAME", String.class, DEFAULT_AUTH_HEADER_NAME); } /** * 获取携带token的param传参的名称 * * @author fengshuonan * @date 2020/10/22 14:11 */ public static String getAuthTokenParamName() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_PARAM_NAME", String.class, DEFAULT_AUTH_PARAM_NAME); } /** * 会话保存在cookie中时,cooke的name * * @author fengshuonan * @date 2020/12/27 13:18 */ public static String getSessionCookieName() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_SESSION_COOKIE_NAME", String.class, DEFAULT_AUTH_HEADER_NAME); } /** * 默认解析jwt的秘钥(用于解析sso传过来的token) * * @author fengshuonan * @date 2021/5/25 22:39 */ public static String getSsoJwtSecret() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_SSO_JWT_SECRET", String.class, SYS_AUTH_SSO_JWT_SECRET); } /** * 默认解析sso加密的数据的秘钥 * * @author fengshuonan * @date 2021/5/25 22:39 */ public static String getSsoDataDecryptSecret() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_SSO_DECRYPT_DATA_SECRET", String.class, SYS_AUTH_SSO_DECRYPT_DATA_SECRET); } /** * 获取是否开启sso远程会话校验,当系统对接sso后,如需同时校验sso的会话是否存在则开启此开关 * * @return true-开启远程校验,false-关闭远程校验 * @author fengshuonan * @date 2021/5/25 22:39 */ public static Boolean getSsoSessionValidateSwitch() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_SSO_SESSION_VALIDATE_SWITCH", Boolean.class, SYS_AUTH_SSO_SESSION_VALIDATE_SWITCH); } /** * sso会话远程校验,redis的host * * @author fengshuonan * @date 2021/5/25 22:39 */ public static String getSsoSessionValidateRedisHost() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_SSO_SESSION_VALIDATE_REDIS_HOST", String.class, SYS_AUTH_SSO_SESSION_VALIDATE_REDIS_HOST); } /** * sso会话远程校验,redis的端口 * * @author fengshuonan * @date 2021/5/25 22:39 */ public static Integer getSsoSessionValidateRedisPort() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_SSO_SESSION_VALIDATE_REDIS_PORT", Integer.class, SYS_AUTH_SSO_SESSION_VALIDATE_REDIS_PORT); } /** * sso会话远程校验,redis的密码 * * @author fengshuonan * @date 2021/5/25 22:39 */ public static String getSsoSessionValidateRedisPassword() { return ConfigContext.me().getConfigValueNullable("SYS_AUTH_SSO_SESSION_VALIDATE_REDIS_PASSWORD", String.class); } /** * sso会话远程校验,redis的db * * @author fengshuonan * @date 2021/5/25 22:39 */ public static Integer getSsoSessionValidateRedisDbIndex() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_SSO_SESSION_VALIDATE_REDIS_DB_INDEX", Integer.class, SYS_AUTH_SSO_SESSION_VALIDATE_REDIS_DB_INDEX); } /** * sso会话远程校验,redis的缓存前缀 * * @author fengshuonan * @date 2021/5/25 22:39 */ public static String getSsoSessionValidateRedisCachePrefix() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_SSO_SESSION_VALIDATE_REDIS_CACHE_PREFIX", String.class, SYS_AUTH_SSO_SESSION_VALIDATE_REDIS_CACHE_PREFIX); } /** * 获取SSO服务器的地址 * * @author fengshuonan * @date 2021/5/25 22:39 */ public static String getSsoUrl() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_SSO_HOST", String.class, SYS_AUTH_SSO_HOST); } /** * 登录密码是否进行RSA加密校验,默认关闭 *

* 需要前端配合加密后再打开开关 * * @author fengshuonan * @date 2022/10/16 23:28 */ public static Boolean getPasswordRsaValidateFlag() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_PASSWORD_RSA_VALIDATE", Boolean.class, false); } /** * 获取MD5加密盐 * @return */ public static String getMd5Salt() { return ConfigContext.me().getSysConfigValueWithDefault("MD5_SALT", String.class, "YJJYXLZX"); } /** * 系统通知IMToken * @return */ public static String getsSystemImToken() { return ConfigContext.me().getSysConfigValueWithDefault("SYSTEM_IM_TOKEN", String.class, ""); } /** * IM消息缓存失效时间(秒),0不缓存,-1不过期 * @return */ public static Long getsImMessageCacheTimeOutSecond() { return ConfigContext.me().getSysConfigValueWithDefault("IM_MESSAGE_CACHE_TIME_OUT_SECOND", Long.class, 60L * 60 * 24 * 10); } /** * 系统默认验证码(开发环境) * @return */ public static String getSysSmsCodeDefault() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_SMS_CODE_DEFAULT", String.class, ""); } /** * 短信华为配置 * @return */ public static String getsSysSmsHuaweiAppKey() { return ConfigContext.me().getConfigValueNullable("SYS_SMS_HUAWEI_APP_KEY", String.class); } public static String getSysSmsHuaweiAppSecret() { return ConfigContext.me().getConfigValueNullable("SYS_SMS_HUAWEI_APP_SECRET", String.class); } public static String getSysSmsHuaweiTemplateId() { return ConfigContext.me().getConfigValueNullable("SYS_SMS_HUAWEI_TEMPLATE_ID", String.class); } public static String getSysSmsHuaweiSignature() { return ConfigContext.me().getConfigValueNullable("SYS_SMS_HUAWEI_SIGNATURE", String.class); } }