月球大数据地理空间分析展示平台-【后端】-月球后台服务
修改令牌管理接口:添加根据id或token设置令牌失效,根据id或token查询有效的令牌
已修改6个文件
157 ■■■■ 文件已修改
src/main/java/com/moon/server/controller/all/SignController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/moon/server/controller/sys/TokenController.java 114 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/moon/server/mapper/sys/TokenMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/moon/server/service/sys/LoginService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/moon/server/service/sys/TokenService.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sys/TokenMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/moon/server/controller/all/SignController.java
@@ -177,7 +177,7 @@
        try {
            String token = WebHelper.getToken(req);
            if (StringHelper.isEmpty(token)) {
                return fail("没有检测到令牌", false);
                return fail("没有检测到令牌或无效", false);
            }
            Boolean flag = tokenService.logout(token, req, res);
src/main/java/com/moon/server/controller/sys/TokenController.java
@@ -5,6 +5,7 @@
import com.moon.server.entity.all.ResponseMsg;
import com.moon.server.entity.sys.TokenEntity;
import com.moon.server.entity.sys.UserEntity;
import com.moon.server.helper.StringHelper;
import com.moon.server.service.sys.TokenService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -76,29 +77,6 @@
    }
    @SysLog()
    @ApiOperation(value = "插入多条")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "list", value = "实体类集合", dataType = "List<TokenEntity>", paramType = "body", example = "")
    })
    @PostMapping(value = "/insertTokens", produces = "application/json; charset=UTF-8")
    public ResponseMsg<Integer> insertTokens(@RequestBody List<TokenEntity> list, HttpServletRequest req) {
        try {
            UserEntity ue = tokenService.getCurrentUser(req);
            if (ue != null) {
                for (TokenEntity entity : list) {
                    entity.setCreateUser(ue.getId());
                }
            }
            int count = tokenService.insertTokens(list);
            return success(count);
        } catch (Exception ex) {
            return fail(ex, -1);
        }
    }
    @SysLog()
    @ApiOperation(value = "删除一条")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "ID", dataType = "Integer", paramType = "query", example = "1")
@@ -155,6 +133,58 @@
    }
    @SysLog()
    @ApiOperation(value = "根据ID更新令牌为失效")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "令牌ID", dataType = "Integer", paramType = "query", example = "6563")
    })
    @GetMapping(value = "/updateExpireById")
    public ResponseMsg<Integer> updateExpireById(Integer id, HttpServletRequest req) {
        try {
            if (null == id || id < 0) {
                return fail("id参数无效", 0);
            }
            TokenEntity entity = tokenService.selectOneById(id);
            if (null == entity) {
                return fail("该id不存在", 0);
            }
            UserEntity ue = tokenService.getCurrentUser(req);
            entity.setUpdateUser(ue.getId());
            int count = tokenService.updateTokenExpire(entity);
            return success(count);
        } catch (Exception ex) {
            return fail(ex, -1);
        }
    }
    @SysLog()
    @ApiOperation(value = "根据Token更新令牌为失效")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "tk", value = "令牌", dataType = "String", paramType = "query", example = "2edea2a2-e307-4baa-992c-b477ce0566dd")
    })
    @GetMapping(value = "/updateExpireByToken")
    public ResponseMsg<Integer> updateExpireByToken(String tk, HttpServletRequest req) {
        try {
            if (StringHelper.isEmpty(tk)) {
                return fail("token参数无效", 0);
            }
            TokenEntity entity = tokenService.selectOneByToken(tk);
            if (null == entity) {
                return fail("该token不存在或已失效", 0);
            }
            UserEntity ue = tokenService.getCurrentUser(req);
            entity.setUpdateUser(ue.getId());
            int count = tokenService.updateTokenExpire(entity);
            return success(count);
        } catch (Exception ex) {
            return fail(ex, -1);
        }
    }
    @SysLog()
    @ApiOperation(value = "根据ID查询")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "ID", dataType = "Integer", paramType = "query", example = "1658")
@@ -169,4 +199,42 @@
            return fail(ex, null);
        }
    }
    @SysLog()
    @ApiOperation(value = "根据ID查询(有效期内的)")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "ID", dataType = "Integer", paramType = "query", example = "6563")
    })
    @GetMapping(value = "/selectOneById")
    public ResponseMsg<TokenEntity> selectOneById(Integer id) {
        try {
            if (null == id || id < 0) {
                return fail("id参数无效", null);
            }
            TokenEntity tokenEntity = tokenService.selectOneById(id);
            return success(tokenEntity);
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @SysLog()
    @ApiOperation(value = "根据token查询(有效期内的)")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "tk", value = "令牌", dataType = "String", paramType = "query", example = "2edea2a2-e307-4baa-992c-b477ce0566dd")
    })
    @GetMapping(value = "/selectOneByToken")
    public ResponseMsg<TokenEntity> selectOneByToken(String tk) {
        try {
            if (StringHelper.isEmpty(tk)) {
                return fail("token参数无效", null);
            }
            TokenEntity tokenEntity = tokenService.selectOneByToken(tk);
            return success(tokenEntity);
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
}
src/main/java/com/moon/server/mapper/sys/TokenMapper.java
@@ -44,7 +44,15 @@
    public TokenEntity selectToken(int id);
    /**
     * 根据token值查询一条记录
     * 根据id查询一条记录
     *
     * @param id
     * @return
     */
    public TokenEntity selectOneById(Integer id);
    /**
     * 根据token查询一条记录
     *
     * @param token
     * @return
src/main/java/com/moon/server/service/sys/LoginService.java
@@ -87,10 +87,11 @@
    /**
     * 用户登录状态
     *
     * @return
     */
    @Override
    public List<LoginEntity> selectLoginCounts(){
    public List<LoginEntity> selectLoginCounts() {
        return loginMapper.selectLoginCounts();
    }
}
src/main/java/com/moon/server/service/sys/TokenService.java
@@ -58,6 +58,11 @@
    }
    @Override
    public TokenEntity selectOneById(Integer id) {
        return tokenMapper.selectOneById(id);
    }
    @Override
    public TokenEntity selectOneByToken(String token) {
        return tokenMapper.selectOneByToken(token);
    }
@@ -94,6 +99,7 @@
    @Override
    public Integer updateTokenExpire(TokenEntity tokenEntity) {
        clearCache(tokenEntity.getToken());
        return tokenMapper.updateTokenExpire(tokenEntity);
    }
@@ -156,12 +162,6 @@
            return false;
        }
        // 清除缓存
        String tokenKey = RedisCacheKey.signTokenKey(token);
        redisService.delete(tokenKey);
        String userKey = RedisCacheKey.signUserKey(te.getToken());
        redisService.delete(userKey);
        // db,设置令牌过期
        te.setUpdateUser(ue.getId());
        Integer rows = updateTokenExpire(te);
@@ -177,6 +177,16 @@
    }
    /**
     * 清除缓存
     */
    public void clearCache(String token) {
        String tokenKey = RedisCacheKey.signTokenKey(token);
        redisService.delete(tokenKey);
        String userKey = RedisCacheKey.signUserKey(token);
        redisService.delete(userKey);
    }
    /**
     * 根据令牌获取实体
     */
    public TokenEntity getEntityByToken(String token) {
src/main/resources/mapper/sys/TokenMapper.xml
@@ -47,6 +47,12 @@
        where id = #{id}
    </select>
    <select id="selectOneById" resultType="com.moon.server.entity.sys.TokenEntity">
        select a.*, fn_uname(create_user) createName, fn_uname(update_user) updateName
        from lf.sys_token a
        where id = #{id} and expire > now() limit 1
    </select>
    <select id="selectOneByToken" resultType="com.moon.server.entity.sys.TokenEntity">
        select a.*, fn_uname(create_user) createName, fn_uname(update_user) updateName
        from lf.sys_token a