我使用的是VueJS和这个例子中的代码https://supertokens.com/docs/thirdpartyemailpassword/pre-built-ui/sign-out
当我点击注销按钮时,页面刷新,但我仍然可以看到userInfo数据(用户会话的id)。当我刷新数据时,数据也仍然存在。同样在我的API的用户管理 Jmeter 板中,用户有正在进行的会话,因此很明显按钮操作不起作用。
我可以在Network选项卡中看到以下API路由被命中:http://localhost:3001/auth/signout
我想这是包括在NodeJS中间件从Supertokens。
<template>
<div>
{{ userInfo }}
<button @click="logout">Logout</button>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import Session from "supertokens-web-js/recipe/session";
import { onMounted } from "vue";
import { useRouter } from 'vue-router';
const router = useRouter()
const userInfo = ref('')
const checkSession = async () => {
if (await Session.doesSessionExist()) {
userInfo.value = await Session.getUserId();
}
}
const logout = async () => {
await Session.signOut();
window.location.reload();
}
onMounted(() => {
checkSession()
})
</script>
有人知道我是不是漏掉了什么吗?
1条答案
按热度按时间pexxcrt21#
问题是浏览器在登录时没有保存会话cookie,因为这是一个跨域请求(网站在localhost上,API在www.example.com上127.0.0.1),跨域请求需要浏览器的https API来保存cookie。