如何在react js中删除Web应用程序cookie

2024-01-03

我是 ReactJs 的新手,我想删除 cookie 并在注销按钮上登录会话以断开用户的会话。 但我无法访问代码中的cookie。

请帮忙。


如果您在 JWT 的 Express 后端的登录路由中的响应上设置 cookie 并使用“httpOnly”选项,则即使使用“universal-”等第三方库,您也无法从客户端/react 访问令牌cookie' 或 'document.cookie'。

您需要清除后端响应中的 cookie,例如当用户注销时。

前端:

// React redux logout action
export const logout = () => async (dispatch) => {
    try {
        await axios.get('/api/auth/logout')
        localStorage.removeItem('userInfo')
        dispatch({ type: type.USER_LOGOUT })
    } catch (error) {
        console.log(error)
    }
}

Backend:

const User = require('../../models/userModel')
const generateToken = require('../../utils/generateToken')

// @desc    Auth user & get token
// @route   POST /api/auth/login
// @access  Public
const login = async (req, res) => {
    const { email, password } = req.body
    try {
        const user = await User.findOne({ email })
        if (user && (await user.verifyPassword(password))) {
            let token = generateToken(user._id)
            res.cookie('token', token, {
                maxAge: 7200000, // 2 hours
                secure: false, // set to true if you're using https
                httpOnly: true,
            })
            res.json({
                _id: user._id,
                name: user.name,
                email: user.email,
                isAdmin: user.isAdmin,
                token: token,
            })
        } else {
            res
                .status(401)
                .json({ success: false, message: 'Invalid email or password' })
        }
    } catch (error) {
        res.status(500).json({ success: false, message: error.toString() })
    }
}

// @desc    Logout controller to clear cookie and token
// @route   GET /api/auth/logout
// @access  Private
const logout = async (req, res) => {
    // Set token to none and expire after 5 seconds
    res.cookie('token', 'none', {
        expires: new Date(Date.now() + 5 * 1000),
        httpOnly: true,
    })
    res
        .status(200)
        .json({ success: true, message: 'User logged out successfully' })
}

module.exports = {
    login,
    logout,
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在react js中删除Web应用程序cookie 的相关文章

随机推荐

  • 使用Python提取嵌套括号中的句子

    我有多个 txt目录中的文件 这是一个示例one of my txt files kkkkk select xx xE PUT xx xxxx jdfjhf jhfjj from xxxx x xx L quit 1 xxxxx FROM
  • 有没有办法强制 mongodb 将某些索引存储在 ram 中?

    我有一个具有相对较大索引的集合 但小于可用内存 并查看该集合上 find 的性能以及 htop 给出的系统中的可用内存量 似乎 mongo 没有在内存中存储完整索引 有没有办法强制 mongo 将这个特定索引存储在内存中 查询示例 gt d
  • 如何在 SQL Server 中包含可选的空参数

    我想创建一个存储过程 它在过程的 WHERE 部分有一个可选参数 我的 C 代码可以为此过程传入 null 或有效的产品 ID 这里是 declare ProductID int set ProductID null select from
  • 等待可重入锁中的条件

    以下代码摘自Java文档的Condition http docs oracle com javase 1 5 0 docs api java util concurrent locks Condition html class Bounde
  • 我怎样才能用maven看到jboss控制台

    我用maven2启动了jboss 5 1 0 GA服务器 是否有可能我可以看到控制台中发生了什么 我正在使用 eclipse 插件来运行 Maven 是否可以在 eclipse 或其他地方看到控制台 这就是我所说的控制台的意思 是否可以在某
  • 如果响应为404,如何使用Service Worker缓存跨域资源?

    w3 6 2 跨源资源和 CORS 应用程序倾向于缓存来自 CDN 或其他来源的项目 可以直接使用请求其中许多
  • CGPDF iPhone/iPad 内存问题

    多年来 我一直在努力尝试为 iPhone iPad 制作一个可用的 PDF 阅读器 但它永远不会停止消耗内存 看来所有用CGContextDrawPDFPage绘制的页面都被内部缓存起来 永远不会释放 我不是唯一一个遇到这个问题的人 htt
  • 临时表列列表 (MySQL)

    我需要在 MySQL 中获取某些临时表 MyISAM 的列表列 例如number column name column 我需要知道具有特定名称的列数 事先 我不知道列数是多少 我正在使用动态 sql 和一些变量来创建临时表 我不能使用sho
  • 多重矩阵乘法

    在 numpy 中 我有一个 N 3x3 矩阵的数组 这是我如何存储它们的示例 我正在抽象内容 N 10 matrices np ones N 3 3 我还有一个 3 向量数组 这是一个例子 vectors np ones N 3 我似乎无
  • 失败:Microsoft.AspNetCore.SpaServices[0]

    Asp net core 2 1 Angular 6应用程序 在我的Start cs文件 我们有 app UseSpa spa gt To learn more about options for serving an Angular SP
  • 函数/函子作为模板参数。它们可以存储吗?

    想象我有以下自由函数和函子 void myFreeFunction void cout lt lt Executing free function lt lt endl struct MyFunctor void operator void
  • Java - 调用屏幕键盘

    我正在开发的应用程序将在Windows 7上运行 它将用于通过触摸屏输入一些信息 每当提示用户输入信息时 我需要弹出一个屏幕键盘 我的问题是 我应该从头开始创建一个键盘类还是应该使用 Windows 7 内置屏幕键盘以及如何在 Java 应
  • 具有非标量输出的 Numpy 矢量化函数

    我正在尝试对输出列表的函数进行矢量化 我希望将 numpy 列表中的所有值提供给它 并让它返回一个矩阵 这样每一行都是输入向量中元素的输出 import numpy as np def func x n o for i in range n
  • uiautomator - 当我验证每个列表项中的文本时,无法让 ListView 滚动。当我点击屏幕上的最后一个项目时,它就失败了

    我正在尝试验证 ListView 中每个列表项中的文本 并逐一向下滚动 以便我可以验证每个列表项 但由于某种原因 我无法让它继续滚动列表来验证每个元素 有没有人有幸自动化这种操作 这是我能做到的最接近的 如果这还不够 请告诉我 UiScro
  • Docker 中使用 capybara 和 headless selenium 浏览器进行 Rails 系统测试

    TL DR 关于如何正确配置 capybara 以便能够使用默认的 Rails minitest 系统测试在 docker 容器中驱动远程 selenium 浏览器 您有什么想法吗 我在 dockerized 环境中运行 Rails 现在我
  • 如何通过浏览弹出窗口设置路径?

    我有下面的脚本 其中有两个路径 一个是目标路径 只有一个 另一个是源路径 变量 关于下面的脚本函数 我将每月运行一次 它将转到源路径 10 路径 并复制最新文件 然后复制并重命名到目标路径 所有文件通用 注意 从响应源复制的文件应按照脚本重
  • 从 javascript 客户端连接到 asp.net core signalR 服务器

    我有 asp net core web api 服务器正在传输信号器 它适用于 asp net 客户端 我试图与下面显示的代码建立连接 但它只连接到非核心服务器 它不适用于核心服务器 the hub class in the server
  • isset() 和 PHP 全局变量

    关于全局变量初始化 function hello testing global conditional random if isset conditional random echo foo is inside 全局变量 condition
  • 根据数据框中的信息在 Pandas 数据框中创建变量

    我有一个按以下方式组织的数据框 var1 var2 var3 var4 0 A 23 B 7 1 B 13 C 4 2 C 12 A 11 3 A 5 C 15 我现在想要创建一个新变量 列 var5 如果 var1 A 它采用 var2
  • 如何在react js中删除Web应用程序cookie

    我是 ReactJs 的新手 我想删除 cookie 并在注销按钮上登录会话以断开用户的会话 但我无法访问代码中的cookie 请帮忙 如果您在 JWT 的 Express 后端的登录路由中的响应上设置 cookie 并使用 httpOnl