我需要知道我的用户是否已连接.为此,我想阅读我在服务器端使用快速会话设置的cookie:
app.use(session({
secret: 'crypted key',
resave: false,
saveUninitialized: true,
cookie: { secure: false } // Put true if https
}))Run Code Online (Sandbox Code Playgroud)
app.post('/connect_user', (req, res) => {
req.session.cookie.username = req.body.username
findUserData('username', req.body.username, req, (userData) => {
req.session.cookie.id = userData.id
req.session.cookie.username = userData.username
res.redirect('/profil')
})
})Run Code Online (Sandbox Code Playgroud)
我尝试使用react-cookie,但它不起作用,但我复制/粘贴npm react-cookie doc:
import React from 'react';
import Landing from './Landing';
import Home from './Home';
import Profil from './Profil';
import {BrowserRouter as Router, Route} from 'react-router-dom'
import { instanceOf } from 'prop-types';
import { Cookies } from …Run Code Online (Sandbox Code Playgroud)考虑下面的代码
Index.getInitialProps = async function({req}) {
const res = await fetch("http://localhost/api/tiles");
const json = await res.json();
}
Run Code Online (Sandbox Code Playgroud)
假设/api/tiles端点需要访问uid用户的 cookie。正常情况下,一个人就可以了{credentials: "include"}。但如何在 Next.js 中执行此操作?
我似乎无法使用react-cookie设置cookie的到期时间...这是我的设置:
import { Cookies } from 'react-cookie'
const cookies = new Cookies()
import moment from 'moment'
Run Code Online (Sandbox Code Playgroud)
以下尝试失败:
cookies.set('cookieName', {key: value}, {path: '/', expires: new Date(Date.now()+2592000)})
cookies.set('cookieName', {key: value}, {path: '/', expires: moment().add(30, "days")})
cookies.set('cookieName', {key: value}, {path: '/', maxAge: 2592000})
Run Code Online (Sandbox Code Playgroud)
Chrome继续呈现:
Expires
When the browsing session ends
Run Code Online (Sandbox Code Playgroud) 我正在我的 React 应用程序中设置 CSRF,并尝试访问我的 Node 服务器设置的 cookie。
我正在universal-cookie尝试读取cookies。我可以访问一些 cookie,但不是我需要的。
饼干看起来像:
csrf_token_secret=s%3AXfLOSTp6QNLTeRk;
Path=/; Expires=Tue, 20 Mar 2018 12:34:34 GMT; HttpOnly
_csrf=PqswrVPP4GUePCh-0fFewrHh; Path=/
Run Code Online (Sandbox Code Playgroud)
使用universal-cookie我尝试过:
const cookies = new Cookies();
console.log(cookies.get('csrf_token_secret'));
console.log(cookies.get('_csrf'));
Run Code Online (Sandbox Code Playgroud)
我可以_csrf正常访问,但无法获取 的值csrf_token_secret。
我需要做什么不同的事情才能获取此 cookie 的值?我猜这和国旗有关系HttpOnly?
我一直在使用window.localstorage来保存一些数据而没有问题,数据在会话之间持续存在.
我决定转而使用cookies,使用'react-cookie',代码如下:
import Cookies from 'react-cookie';
export default class Auth {
static STORAGE_KEY: string = "token";
static cookies = new Cookies();
public static getToken() {
var toRet = this.cookies.get(Auth.STORAGE_KEY);
return toRet;
}
public static setToken(token: string) {
this.cookies.set(Auth.STORAGE_KEY, token, { path: '/' });
}
public static removeToken(): void {
this.cookies.remove(Auth.STORAGE_KEY, { path: '/' });
}
}
Run Code Online (Sandbox Code Playgroud)
如果我调用'setToken',则值集仍然存在,但是如果我关闭浏览器并再次打开它,则数据会丢失.
我的根呈现功能根据网页https://www.npmjs.com/package/react-cookie有cookie提供者 :
import { CookiesProvider } from 'react-cookie';
export class Layout extends React.Component<{}, {}> {
public render() {
return <CookiesProvider> ( …Run Code Online (Sandbox Code Playgroud)