背景
公司认证在使用ticket登录时,因为ticket在url里面登录后ticket已失效,此时切换兼容模式或者急速模式因为url没有变化,导致ticket二次使用,后端提示ticket已使用
解决办法
存入Cookie来查询一下ticket是否使用过,使用过直接常规登录即可,未使用传递ticket用静默登录。
function getTicket () {
const ticket = getQueryString('ticket')
if (ticket && !getCookie(ticket)) {
setCookie(ticket, 'true', 1)
return ticket
} else {
return ''
}
}
function setCookie (cname, cvalue, exdays) {
var d = new Date()
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000))
var expires = 'expires=' + d.toGMTString()
document.cookie = cname + '=' + cvalue + '; ' + expires
}
function getCookie (cname) {
var name = cname + '='
var ca = document.cookie.split(';')
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim()
if (c.indexOf(name) === 0) return c.substring(name.length, c.length)
}
return ''
}
知识点
- 360浏览器急速和兼容模式切换sessionStorage 和localStorage是不共享的
- Cookie是共享的切换的时候是能够读取到的