结论:ios 系统中 JavaScript 日期格式不能以
-
分割 要以/
分割
之前写的cms中登录一直没有测苹果的设备,后来发现无法进行登录,ios,ipados都是,macos没试,没有设备...,都是基于unix的估计也差不多,后来经过调试发现,获取token时无法获取到,但是已经保存了,经过调试发现,因获取token时会预判断过期时间,然而一直时
false
其他设备时true
,最后发现日期转换时NAN
经过面向谷歌编程得到了以上结论
- 贴下代码
重点就在
Date.parse(JSON.parse(token).expiredTime.replace(/-/g, '/'))
加了.replace(/-/g, '/'))
得以解决
const TokenKey = 'accessToken'
const RefreshTokenKey = 'refreshToken'
export function getToken() {
const token = localStorage.getItem(TokenKey)
if (token) {
if (Date.parse(JSON.parse(token).expiredTime.replace(/-/g, '/')) > Date.now()) {
return JSON.parse(token).token
}
}
return undefined
}
export function getRefreshToken() {
const token = localStorage.getItem(RefreshTokenKey)
if (token) {
if (Date.parse(JSON.parse(token).expiredTime.replace(/-/g, '/')) > Date.now()) {
return JSON.parse(token).token
} else {
removeToken()
}
}
return undefined
}
export function setToken(token, expiredTime) {
return localStorage.setItem(TokenKey, JSON.stringify({ token: `token:${token}`, expiredTime: expiredTime }))
}
export function setRefreshToken(refreshToken, expiredTime) {
return localStorage.setItem(RefreshTokenKey, JSON.stringify({ token: refreshToken, expiredTime: expiredTime }))
}
export function removeToken() {
localStorage.removeItem(RefreshTokenKey)
return localStorage.removeItem(TokenKey)
}