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



随时随地看视频