SpringSecirity(四)——用户退出

因为JWT是无状态的,去中心化的,在服务器端无法清除,服务器一旦进行颁发,就只能等待自动过期 才会失效,所以需要redis配合才能完成登录状态的记录。

实现思路: 登录后在redis中添加一个白名单,把认证成功的用户的JWT添加到redis中。

在退出的时候,服务清空springsecurit保存认证通过的Authentication对象,其次在redis中进行删除。

(1)改造登录接口

保存至redis时,加上截止时间。

(2)退出后台代码实现

java 复制代码
    /**
     * 用户退出
     */
    @PostMapping("/logout")
    public R logout(HttpServletRequest request, HttpServletResponse response) {
        //获取token
        String token = request.getParameter("Authorization");
        //如果没有从头部获取token,那么从参数里面获取
        if (ObjectUtils.isEmpty(token)) {
            token = request.getHeader("Authorization");
        }
        //获取用户相关信息
        Authentication authentication
                = SecurityContextHolder.getContext().getAuthentication();
        if (authentication != null) {
            //清空用户信息
            new SecurityContextLogoutHandler().logout(request, response,authentication);
            //清空redis里面的token
            String key = "token_" + token;
            stringRedisTemplate.delete(key);
        }
        return R.ok().message("用户退出成功");
    }
相关推荐
小弥儿4 小时前
GitHub今日热榜 | 2026-09-04:Agent省 token 成今日主线
学习·开源·github
苏灿烤鱼7 小时前
给 AI Agent 装一个「会进化的大脑」:OpenViking 深度拆解
开源·github·agent
逛逛GitHub7 小时前
清华开源的 Agent 交互学习神器,又登上 GitHub 热榜了。
github
其实防守也摸鱼7 小时前
OpenClaw Windows 踩坑实战指南
运维·服务器·数据库·windows·github·copilot
小马9269 小时前
从单模型到多模型编排:GitHub HydraFusion 如何让编程 Agent 降本 36%-67%
人工智能·github
小弥儿10 小时前
GitHub今日热榜 | 2026-09-08:微软 markitdown 冲进前三
学习·microsoft·开源·github
蜡台11 小时前
超详细 GitHub Actions 自动发布部署教程
github·github page·github action
11路没有终点12 小时前
CI/CD 集成:GitHub Actions
ci/cd·github
右耳朵猫AI12 小时前
Github周刊2026W36 | Archify架构图生成、科研Agent技能库、VoiceStudio本地语音、MiniMind训练6400万参数
github
DeepAgent12 小时前
AI Agent 开发实战(13):GitHub 开源
开源·github·agent