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

相关推荐
优选资源分享2 小时前
PicGo v3.0.3 新版 | 开源免费图床工具
javascript·笔记·electron
裕晟资质规划3 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界
java·服务器·前端·网络·安全
念念清晰3 小时前
000-OpenJDK17 源码构建:MacOS环境(M芯片)
java·后端
ShineWinsu3 小时前
对于JavaScript:JavaScript基础语法的解析
开发语言·前端·javascript·面试·web·基础语法·循环
月夏3 小时前
Vue3 转 React:18 项对照表 + 5 个必踩的坑(附 7 天上手路线)
前端
广州华水科技3 小时前
单北斗GNSS位移监测系统的应用与维护解析
前端
Wang's Blog3 小时前
Java 项目实战: 交友项目 - 百度人脸识别入门案例
java·百度·交友
普通人64 小时前
php+html+canvas实现树状打开的结构
开发语言·javascript·html5·1024程序员节
梦曦i4 小时前
uni-storage 0.1.0 发布:TTL过期管理+多实例隔离
前端·storage·uni-app x
wuminyu4 小时前
JMM学习总结:深入理解happens-before关系
java·linux·c语言·jvm·c++