问题描述
我在 Vuex 商店 (user.js) 中使用 vue-cookies 包进行突变以在客户端设置 cookie。它在登录时设置得很好(我用 console.log(document.cookie) 在我的浏览器控制台上检查了)。我在 Express 应用程序 (server.js) 中使用 cookie-parser 访问存储在 cookie 中的令牌时遇到问题 - req.cookies 返回 undefined。 有人知道为什么会这样吗?
user.js
import axios from 'axios'
import Vue from 'vue'
import VueCookies from 'vue-cookies'
export const mutations = {
SET_USER_DATA(state,data) {
let { token } = data
VueCookies.set('token',token,{
maxAge: 900000,path: '/',httpOnly: false,secure: false // <-- false here when served over HTTP
});
},CLEAR_USER_DATA() {
this.$cookies.remove('token')
},}
export const actions = {
login({ commit },credentials) {
return axios
.post('//localhost:3000/login',credentials)
.then(({ data }) => {
setTimeout(() => {
commit('SET_USER_DATA',data);
// resolve();
},1000);
}),Vue.prototype.$cookies.set('token','',{ expires: 365 })
},logout({ commit }) {
commit('CLEAR_USER_DATA')
}
}
server.js
import Express from 'express'
import bodyParser from 'body-parser'
import cors from 'cors'
import cookieParser from 'cookie-parser'
import { fetchAccountFromToken } from './helpers/token.js'
const app = Express()
app.use(bodyParser.json())
app.use(cors())
app.use(cookieParser())
app.use(app.router)
app.use(Express.static(__dirname + '/public'))
....
app.get('/products',{withCredentials: true},(req,res) => {
let token = req.cookies.token
console.log(token)
let account = fetchAccountFromToken(token)
console.log(account)
let clientId = account.id
var products = 'SELECT * FROM products WHERE client_id = ?'
con.query(products,[clientId],function(err,results) {
if (err) throw err
res.send(results)
})
})
令牌.js
export function fetchAccountFromToken(token) {
return JSON.parse(Buffer.from(token.split('.')[1],'base64').toString('utf-8'))['user']
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)