使用VUE 2和插件vue-auth(https://github.com/websanova)。无论出于何种原因,在IE和Edge中,auth令牌都会在页面刷新时从localStorage中删除,但是在Chrome中,FF一切正常,并且不会删除令牌。
我一直在开发chrome并且即将推出产品。正在其他浏览器中进行测试,然后在开发阶段结束时遇到这种情况。使用他们的文档,我基本上没有任何实际的改变。
Vue.use(require('@websanova/vue-auth'), {
auth: require('@websanova/vue-auth/drivers/auth/bearer.js'),
http: require('@websanova/vue-auth/drivers/http/axios.1.x.js'),
router: require('@websanova/vue-auth/drivers/router/vue-router.2.x.js'),
refreshData: {enabled: false},
});
Vue.auth.login({
method: 'post',
data: {email: payload.email, password: payload.password, rememberMe: true},
}).catch(error => {
console.log('error happened');
console.log(error);
})
打开IE,转到页面,登录,查看localStorage default_auth_token存在。 点击F5 用户被注销。 Vuew localStorage和default_auth_token消失了。
在IE中完全相同。
我没有使用他们的插件做任何自定义,然后禁用refesh令牌选项,因为我们不使用它们。
我知道这可能是一个很长的机会,但是我已经尝试过使用github问题(https://github.com/websanova/vue-auth/issues/309)无效。
答案 0 :(得分:0)
我...恨...... IE ......
如果一个cookie有一个localhost域(没有三个点域,例如foo.bar.com
),那么IE和Edge只会让它掉线而不会出错。 Cookie未保存,您不知道原因。
function setCookie (name, value, timeOffset) {
var domain = this.options.cookieDomain();
var expires = (new Date((new Date()).getTime() + timeOffset)).toUTCString();
if (domain === 'localhost'){
document.cookie = name + '=' + value + '; Expires=' + expires + ';Path=/;';
} else {
document.cookie = name + '=' + value + '; Expires=' + expires + ';Path=/; Domain=' + domain + ';';
}
}
这花了我一整天来浏览这个插件,但现在我真的明白它是如何工作的。我通常是一个后端python开发人员,所以这很有启发性。