为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第13天 设置会话与Cookie

标签:
Java


课程名称:Spring Cloud 进阶 Alibaba 微服务体系自媒体实战
课程章节: 第3章 开发通行证有关服务
主讲老师: 风间影月

课程内容

用户一旦登录注册成功,则需要设置会话,由于分布式微服务,使用分布式会话,用户token等信息存入redis。与此同时,在cookie中也需要设置用户的相关信息。

完善 PassportController.doLogin()

public static final String REDIS_USER_TOKEN = "redis_user_token";
int userActiveStatus = user.getActiveStatus();
// 如果用户状态已经被封了,则不设置会话与cookie信息
if (userActiveStatus != UserStatus.FROZEN.type) {
    // 3. 用户的分布式会话设置
    String uniqueToken = UUID.randomUUID().toString().trim();
    redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uniqueToken);

    // 4. 用户userId与token放入cookie
    setCookie(request, response, "utoken", uniqueToken, COOKIE_MONTH);
    setCookie(request, response, "uid", user.getId(), COOKIE_MONTH);
}

// 5. 用户登录成功则需要删除已经使用过的短信验证码,该验证码只能匹配使用一次,过后作废
//        redis.del(MOBILE_SMSCODE + mobile);

// 6. 用户状态:未激活或者已激活,返回给前端,用于页面跳转
return GraceJSONResult.ok(userActiveStatus);

cookie的封装方法,可以统一调用。

public static final String DOMAIN_NAME = "imoocnews.com";
public static final Integer COOKIE_MONTH = 30 * 24 * 60 * 60;

public void setCookie(HttpServletRequest request,
                           HttpServletResponse response,
                           String cookieName,
                           String cookieValue,
                           Integer MaxAge) {
        try {
            cookieValue = URLEncoder.encode(cookieValue, "utf-8");
            setCookieValue(request, response, cookieName, cookieValue, MaxAge);
//            Cookie cookie = new Cookie(cookieName, cookieValue);
//            cookie.setMaxAge(MaxAge);
//            cookie.setDomain(DOMAIN_NAME);
//            cookie.setPath("/");
//            response.addCookie(cookie);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
    
public void setCookieValue(HttpServletRequest request,
                               HttpServletResponse response,
                               String cookieName,
                               String cookieValue,
                               Integer MaxAge) {
        Cookie cookie = new Cookie(cookieName, cookieValue);
        cookie.setMaxAge(MaxAge);
        cookie.setDomain(DOMAIN_NAME);
        cookie.setPath("/");
        response.addCookie(cookie);
    }

课程收获

1.cookie是什么

cookie也叫HTTPCookie,是客户端与服务器端进行会话(session)使用的一个能够在浏览器本地化存储的技术。

cookie就是为了存储sessionId而诞生

cookie的特性,会随着要请求自动化携带cookie的值到服务器

2.cookie的作用

cookie的作用主要是在浏览器存储少量的数据,利用cookie我们可以实现保存数据的功能。

3.完成了系统模块的Cookie对接。

课程截屏


https://img2.sycdn.imooc.com/632723bc0001dcda14580852.jpg

https://img2.sycdn.imooc.com/632723c600018cad14740840.jpg

https://img2.sycdn.imooc.com/632723cf0001160614740848.jpg


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1
获赞与收藏
2

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消