登录 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);
    }

相关推荐
李崧正14 分钟前
Java技术分享:Lambda表达式与函数式编程
java·开发语言·python
老了,不知天命16 分钟前
鳶尾花項目JAVA
java·开发语言·机器学习
二哈赛车手22 分钟前
新人笔记---实现简易版的rag的bm25检索(利用ES),以及RAG上传时的ES与向量数据库双写
java·数据库·笔记·spring·elasticsearch·ai
winner888125 分钟前
从零吃透C++命名空间、std、#include、string、vector
java·开发语言·c++
爱上好庆祝29 分钟前
学习js的第五天
前端·css·学习·html·css3·js
AI人工智能+电脑小能手34 分钟前
【大白话说Java面试题】【Java基础篇】第26题:Java的抽象类和接口有哪些区别
java·开发语言·面试
C澒42 分钟前
IntelliPro 产研协作平台:基于 AI Agent 的低代码智能化配置方案设计与实现
前端·低代码·ai编程
bzmK1DTbd43 分钟前
SOLID原则在Java中的实践:单一职责与开闭原则
java·开发语言·开闭原则
winner88811 小时前
C++ 命名空间、虚函数、抽象类、protected 权限全套通俗易懂精讲(附与 Java 对比)
java·开发语言·c++
一袋米扛几楼981 小时前
【Git】规范化协作:详解 GitHub 工作流中的 Issue、Branch 与 Pull Request 最佳实践
前端·git·github·issue