NodeJS Supertokens Session.signOut方法在Vue中不工作

k10s72fa  于 2023-04-05  发布在  Node.js
关注(0)|答案(1)|浏览(66)

我使用的是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>

有人知道我是不是漏掉了什么吗?

pexxcrt2

pexxcrt21#

问题是浏览器在登录时没有保存会话cookie,因为这是一个跨域请求(网站在localhost上,API在www.example.com上127.0.0.1),跨域请求需要浏览器的https API来保存cookie。

相关问题