博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
踩坑:基于 fetch 与 Node.js 的 cookies 持久化
阅读量:6529 次
发布时间:2019-06-24

本文共 1693 字,大约阅读时间需要 5 分钟。

基于 fetch 与 Node.js 的 cookies 持久化

前端:React Native

后端: Node.js

在实现用户登录态维护时,发现前端在登录成功后得到的登录态信息,在模拟器重开或杀死应用后,无法实现预期的持久化存储。

初步先排查前端封装的 fetch 模块,但由于已正确设置 credentials ,故问题出错点不在前端。

后端,使用的是 express-session 方法,设置了 maxAge ,但没有设置 expires ,在查阅 express-sessionREADME 时,发现没有设置 expires 可能是个潜在的出错点。以下为官方API文档的内容链接。

在设置好 expires 后,不管是重开模拟器还是杀死应用,用户的登录态性能能持久化保存,故问题解决。

但出错的具体原因,仍在研究与学习,后续跟进。

最终实现

关于对 fetch 的具体使用方法,可点击以下链接跳转。

// request.js// React Native 网络模块的封装const request = (url, method, body) => {    let isOk;	    // 使用了 Prmosise 的构造函数模式,有点违背 Promise 的设计原则    // 待日后调整,现在先将就使用    return new Promise((resolve, reject) => {        fetch(url, {            // 前端持久化 cookies 的关键            // 同域请求使用 same-origin            // 跨域请求使用 include            credentials: "same-origin",            method,            headers: {                Accept: "application/json",                "Content-Type": "application/json;charset=utf-8"            },            // 注意这里需要使用 strigify 方法            body: JSON.stringify(body)        })            .then(response => {                isOk = response.ok;                                return response.json();            })            .then(responseData => {                if (isOk) {                    resolve(responseData);                } else {                    reject(responseData);                }            })            .catch(error => {                reject(error);            });    });};export default request;// express-session 的设置app.use({    secret: "sessionSignedSecret",    saveUninitialized: false,    resave: false,    // 设置 maxAge    // 注意时间值均以毫秒为单位    maxAge: 2592000000,    // 设置 expires    expires: new Date(new Date.now() + 2592000000)})复制代码

转载地址:http://qzxbo.baihongyu.com/

你可能感兴趣的文章
Java反射机制详解(3) -java的反射和代理实现IOC模式 模拟spring
查看>>
(2编写网络)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署
查看>>
【转】如何使用分区助手完美迁移系统到SSD固态硬盘?
查看>>
NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
查看>>
ios兼容iphonex刘海屏解决方案
查看>>
就是要你懂TCP -- 握手和挥手
查看>>
Andrew Ng机器学习公开课笔记 -- Regularization and Model Selection
查看>>
《Python游戏编程快速上手》一1.3 如何使用本书
查看>>
《Visual Studio程序员箴言》----1.2 滚动与导航
查看>>
Processing编程学习指南2.7 Processing参考文档
查看>>
架构师速成-架构目标之伸缩性\安全性
查看>>
执行可运行jar包时读取jar包中的文件
查看>>
linux下ExtMail邮件使用及管理平台
查看>>
linux中iptables设置自建dns服务器的端口
查看>>
TP5+PHPexcel导入xls,xlsx文件读取数据
查看>>
基于Yum安装zabbix3.0
查看>>
Master-work模式
查看>>
dos命令行 指令
查看>>
RT-Thread--时间管理
查看>>
BUPT 63T 高才生 找最佳基站
查看>>