继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

userqiao
关注TA
已关注
手记 35
粉丝 1
获赞 3


课程名称: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对接。

课程截屏


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

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

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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP