项目场景:
在xiang’mu.com下有多个项目,比如xiang’mu.com/a/index.html和xiang’mu.com/b/index.html,其中a和b是两个不同的项目,但是它们都是xiang’mu.com下的,
问题描述:
它们可以共享cookie,但是它们又不是同一个项目,所以它们不能共享session,所以就需要解决它们之间的免登录问题。需要在a项目登录后,b项目打开直接登录
解决办法:
使用cookie解决,在a项目登录后,将cookie写到浏览器,在b项目打开时,将cookie读取出来,然后放到请求头中,这样就可以实现两个项目之间的免登录了。
这是一个关于cookie操作的js文件,在用到的页面进行使用
cookie.js
<!-- 保存cookie xxxxxx是a、b所在的顶级域名 -->
function setCookie(name, value, expires) {
const date = new Date();
date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000); // 设置过期时间
const expiresString = "expires=" + date.toUTCString();
document.cookie = name + "=" + value + ";" + expiresString + ";path=/;domain=xxxxxx;";
}
<!-- 获取cookie的值 -->
function getCookie(name) {
const cookieName = name + "=";
const cookies = document.cookie.split(";");
for (let i = 0; i < cookies.length; i++) {
let cookie = cookies[i];
while (cookie.charAt(0) === " ") {
cookie = cookie.substring(1);
}
if (cookie.indexOf(cookieName) === 0) {
return cookie.substring(cookieName.length, cookie.length);
}
}
return "";
}
<!-- 删除cookie的值 -->
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
}
export {setCookie,getCookie,deleteCookie}
引入cookie.js文件并操作
import { setCookie, getCookie ,deleteCookie } from "./utils/cookie.js";
<!-- 保存cookie -->
setCookie("token", token的值, 7);//cookie储存的键名、键值、过期时间(天)
<!-- 获取cookie -->
const token = getCookie("token");
<!-- 删除cookie -->
deleteCookie("token");
以上便是作者对于cookie免登录的一些使用;欢迎提出批评