cookie无法存储在浏览器中?导致每次无法判断用户是否为登录态?

追梦旅程
  • 1
新手上路,请多包涵

在我登录的逻辑结束之后,就调用了addCookie的方法,来讲cookie存入浏览器,并设置了过期时间,代码如下:

@GetMapping("/verifyLoginInfo")
    public Result<CodeMsg> loginVerify(HttpServletResponse response, String userId, String code){
        String verifyCode = jedisService.getKey(VerifyCodeKey.verifyCodeKeyLogin, code, String.class);
        User user = userService.selectByUserId(userId);
        if(user == null){
            return Result.error(CodeMsg.UNREGISTER_PHONE);
        }
        if(verifyCode == null || (!verifyCode.equals(code))){
            return Result.error(CodeMsg.VERIFY_CODE_ERROR);
        }
        // 这里证明登录成功了,拿到用户信息了,这里我应该把用户的信息放在cookie和redis中
        addCookie(response, user);
        return Result.success(CodeMsg.SUCCESS);
    }
public void addCookie(HttpServletResponse response, User user){
        String token = CommonUtils.uuid();
        log.info("token=" + token);
        // 将token值以及user保存进redis
        jedisService.setKey(UserTokenKey.userTokenKey, token, user);
        Cookie cookie = new Cookie(USER_TOKEN, token);
        // 设置60天的有效期
        cookie.setMaxAge(UserTokenKey.userTokenKey.expireSeconds());
        cookie.setPath("/");
        response.addCookie(cookie);

    }

但是这样设置的话,只有登录成功的那次请求,浏览器会显示cookie值:
image.png
但是接着发请求的话,这个cookie就消失了,所以就出现了,用户实际登录了,但是后台的逻辑回给用户报错,用户未登录,原因Cookie就根本没有保存在浏览器中??
image.png

我在怎么改代码呢?求助?

回复
阅读 212
1 个回答

如果是有跨域请求,前端ajax 需要设置withCredentialstrue withCredentials 原生设置,每个ajax库也有自己的设置方式,配置了xhr.withCredentials = true时,必须在后端增加 response 头信息Access-Control-Allow-Origin必须指定域名,不能为*, 且Access-Control-Allow-Credentials设置为true,你用java自己看看框架怎么配置

你知道吗?

宣传栏