Browse Source

规范对外接口

李进 2 years ago
parent
commit
d72199db73

+ 4 - 0
authorize-api-service/src/main/java/com/xy/config/SaTokenInterceptorImpl.java

@@ -1,5 +1,6 @@
 package com.xy.config;
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.xy.ServerWebConfig;
 import com.xy.enums.SaTokenEnum;
 import com.xy.error.CommRuntimeException;
@@ -29,11 +30,14 @@ public class SaTokenInterceptorImpl extends HandlerInterceptorAdapter implements
      */
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+        //登录鉴权
         String satoken = request.getHeader(saTokenAuthorizeConfig.getTokenName());
         boolean b = AuthorizeUtils.authByLogin(satoken);
         if (!b) {
             throw new CommRuntimeException(SaTokenEnum.NO_LOGIN.getKey(), SaTokenEnum.NO_LOGIN.getName());
         }
+        //token续签
+        StpUtil.renewTimeout(satoken, saTokenAuthorizeConfig.getTimeout());
         return true;
     }
 

+ 7 - 6
authorize-api-service/src/main/java/com/xy/redis/RedisCache.java

@@ -77,9 +77,9 @@ public class RedisCache extends AuthorizeUtils {
             List<SysRole> sysRoles2 = sysRoleMapper.joinSelectList(sysRoleJoinLambdaWrapper, SysRole.class);
             JList<Long> sysRoleIds2 = new JArrayList<>(sysRoles2).getProperty(SysRole::getId);
             if (sysRoleIds2.size() > 0) {
-                sysRoleIds.addAll(sysRoleIds2);
-                //去重
-                sysRoleIds = sysRoleIds.comparing();
+                sysRoleIds.setAll(sysRoleIds2)
+                        .comparing();
+                sysRoles = new JArrayList<>(sysRoles2).setAll(sysRoles);
             }
         }
         //获取登录人所有角色菜单
@@ -94,9 +94,10 @@ public class RedisCache extends AuthorizeUtils {
                 .end();
         List<SysMenuJoinSysRoleMenu> sysMenus = sysMenuMapper.joinSelectList(sysMenuJoinLambdaWrapper, SysMenuJoinSysRoleMenu.class);
         JMap<Long, List<SysMenuJoinSysRoleMenu>> sysMenuMaps = new JArrayList<>(sysMenus).toMap(SysMenuJoinSysRoleMenu::getRoleId).group();
-        sysSystems.forEach(sysSystem -> {
+        for (SysSystem sysSystem : sysSystems) {
             List<AuthorizeUtils.CacheEntity> cacheEntitys = new ArrayList<>();
-            sysRoles.forEach(sysRole -> {
+            JList<SysRole> list = new JArrayList<>(sysRoles).filter().eq(SysRole::getSysId, sysSystem.getId()).list();
+            list.forEach(sysRole -> {
                 AuthorizeUtils.CacheEntity cacheEntity = new AuthorizeUtils.CacheEntity()
                         .setRoleId(sysRole.getId())
                         .setRoleCode(sysRole.getCode())
@@ -104,7 +105,7 @@ public class RedisCache extends AuthorizeUtils {
                 cacheEntitys.add(cacheEntity);
             });
             roleMenuRedisService.setMap(getKey(loginId), sysSystem.getId().toString(), cacheEntitys);
-        });
+        }
     }
 
     /**

+ 3 - 0
authorize-sdk/src/main/java/com/xy/utils/AuthorizeUtils.java

@@ -292,6 +292,9 @@ public class AuthorizeUtils {
         //遍历角色
         for (AuthorizeUtils.CacheEntity cacheEntity : cacheEntities) {
             List<SysMenuJoinSysRoleMenu> sysMenuJoinSysRoleMenus = cacheEntity.getList();
+            if (!Emptys.check(sysMenuJoinSysRoleMenus)) {
+                continue;
+            }
             list.addAll(new JArrayList<>(sysMenuJoinSysRoleMenus).filter()
                     .isNotNull(SysMenuJoinSysRoleMenu::getInterfaceUri).list()
                     .getProperty(SysMenuJoinSysRoleMenu::getInterfaceUri)

+ 3 - 3
authorize-start/src/main/resources/bootstrap.yml

@@ -19,13 +19,13 @@ sa-token:
   # token名称 (同时也是cookie名称)
   token-name: satoken
   # token有效期,单位s 默认30天, -1代表永不过期
-  timeout: 86400
+  timeout: 3600
   # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒, -1代表永不过期
-  activity-timeout: 3600
+  activity-timeout: -1
   # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
   is-concurrent: true
   # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
-  is-share: true
+  is-share: false
   # token风格
   token-style: random-64
   # 是否输出操作日志