登录 jwt ,filter

cookie 在请求头中叫做cookie,在响应头中叫set-cookie

复制代码
 @GetMapping("/c1")
    public Result cookie1(HttpServletResponse resp){
        resp.addCookie(new Cookie("login_name","itheima"));
        return Result.success();
    }
    @GetMapping("/c2")
    public Result cookie2(HttpServletRequest request){
        Cookie [] cookies = request.getCookies();
        for(Cookie cookie : cookies){
            if(cookie.getName().equals("login_username")){
                System.out.println("login_username" + cookie.getValue());
            }
        }
        return Result.success();
    }

当前所在位置和请求位置,然后从3维度来判断是否是跨哉请求,只要有一个不同就属于

session基于cookie实现

java 复制代码
@GetMapping("/s1")
    public Result session1(HttpSession session){
        session.setAttribute("loginUser", "tom");
        return Result.success();
    }

    @GetMapping("/s2")
    public Result session2(HttpServletRequest request){
        HttpSession session = request.getSession();
        Object loginUser = session.getAttribute("loginUser");
        return Result.success(loginUser);
    }

拦截器

Filter

java 复制代码
@Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) servletRequest;
        HttpServletResponse resp = (HttpServletResponse)servletResponse;
        //获取请求的url
        String url = req.getRequestURL().toString();
        //判断是否包含登录
        if(url.contains("login")){
            filterChain.doFilter(req, resp);
            return;
        }
        //获取请求头中的令牌
        String jwt = req.getHeader("token");
        if(!StringUtils.hasLength(jwt)){ //如果为空
            Result errorRet = Result.error("NOT_LOGIN");
            //阿里巴巴fastJson
            String notLogin = JSONObject.toJSONString(errorRet);
            //将json字符串返回给浏览器
            resp.getWriter().write(notLogin);
        }
        //解析token,如果解析失败,返回错误结果
        try {
            JwtUtils.parseJwt(jwt);
        } catch(Exception e){
            Result errorRet = Result.error("NOT_LOGIN");
            //阿里巴巴fastJson
            String notLogin = JSONObject.toJSONString(errorRet);
            //将json字符串返回给浏览器
            resp.getWriter().write(notLogin);
            return;
        }
        //放行
        filterChain.doFilter(req, resp);
    }

相关推荐
墨雨晨曦889 小时前
2026/08/15 spring AI学习总结
java·tomcat
fatcoder9 小时前
玩转Nginx 03 — location 匹配规则:让不同的路径各回各家
前端·后端·nginx
HjhIron9 小时前
前端面试高频考点 —— TS 高级类型 & CSS 三列布局
前端
wno7049 小时前
Spring Boot JdbcTemplate配置Druid多数据源
java·spring boot·后端
李剑一9 小时前
《牛来》火了?我用ThreeJs实现了一个简易版的,代码全送给你,文章最后附演示效果
前端
聊浮游10 小时前
JAVA2026最新全套学习资料、学习路线
java·开发语言·jvm·mysql·spring·maven·idea
MacroZheng10 小时前
完美替代 Navicat!这款内置 AI 的数据库工具,太香了!
java·后端·mysql
世界哪有真情10 小时前
AI 写代码两年多,我发现自己越来越"看不进去"了
前端·后端·ai编程
星栈10 小时前
被 Rust async 纠正的三个异步认知
前端·后端·rust
前端_刘师兄10 小时前
前端开发工程师转FAE工程师路线规划
前端