Nuxt:如何从 express 获取会话值
Nuxt : How to get the session values from express
我试图通过 this.$session.userid
从 Nuxt 中的快速会话 (req.session.userid
) 获取值,但我无法在 console.log.
中获取值
它只是显示“无法读取未定义的属性(读取 'userid')”
如果我得到 this.$session 的值,它就会显示 'undefined'
如果我想通过session正常获取value,那么需要怎么调用value呢?还是不能通过session取值?
/nuxt.config.js
export default{
components: true,
buildModules: [
'@nuxtjs/dotenv'
],
modules: [
'@nuxtjs/dotenv', 'cookie-universal-nuxt',
],
router: {
middleware: ['auth']
},
serverMiddleware: [
'~/server/app.js',
],
}
/server/app.js
const express = require('express')
const app = express()
const session = require('express-session')
const cors = require('cors')
app.use(cors())
//body-parser added
app.use(express.json())
//session added
app.use(session({
secret: 'secret key',
resave: false,
saveUninitialized: true
}))
...
app.use('/login_router', require('./routes/login_router'))
/server/routes/login_router.js
const express = require('express');
const router = express.Router();
const path = require('path');
router.get('/testGetUserid', function(req, res){
req.session.userid = '10101'
console.log('req.session.userid>>>>>>', req.session.userid)
res.redirect('/login')
});
/pages/login.vue
<template>
<button @click="submitTest">Get the userid</button>
</template>
<script>
export default {
methods:{
submitTest(){
console.log('this.$session.userid>>>', this.$session.userid) // I want to see this value as 10101
}
}
}
</script>
我假设您使用的是 SPA 模式。
因此您可以使用 API 来获取该用户 ID。
router.get('/testGetUserid', function(req, res){
req.session.userid = '10101'
res.json({ userId: req.session.userid })
});
如果你想在另一个端点得到userId
,我想你可以这样做。我还没有尝试过,但我相信一旦你在 /testGetUserid
.
中设置它,会话就可以在你的后端代码中的任何地方访问。
例如你有 /user
路线
router.get('/user', function(req, res){
const userId = req.session.userid
// do something
res.json(someJSON)
});
在 Nuxt
<script>
export default {
methods:{
submitTest(){
axios.get('/testGetUserid', { withCredentials: true }).then(res => {
// here you can get the userId, you can store it in variable or vuex
conosle.log(res.data.userId)
})
}
}
}
</script>
我试图通过 this.$session.userid
从 Nuxt 中的快速会话 (req.session.userid
) 获取值,但我无法在 console.log.
它只是显示“无法读取未定义的属性(读取 'userid')”
如果我得到 this.$session 的值,它就会显示 'undefined'
如果我想通过session正常获取value,那么需要怎么调用value呢?还是不能通过session取值?
/nuxt.config.js
export default{
components: true,
buildModules: [
'@nuxtjs/dotenv'
],
modules: [
'@nuxtjs/dotenv', 'cookie-universal-nuxt',
],
router: {
middleware: ['auth']
},
serverMiddleware: [
'~/server/app.js',
],
}
/server/app.js
const express = require('express')
const app = express()
const session = require('express-session')
const cors = require('cors')
app.use(cors())
//body-parser added
app.use(express.json())
//session added
app.use(session({
secret: 'secret key',
resave: false,
saveUninitialized: true
}))
...
app.use('/login_router', require('./routes/login_router'))
/server/routes/login_router.js
const express = require('express');
const router = express.Router();
const path = require('path');
router.get('/testGetUserid', function(req, res){
req.session.userid = '10101'
console.log('req.session.userid>>>>>>', req.session.userid)
res.redirect('/login')
});
/pages/login.vue
<template>
<button @click="submitTest">Get the userid</button>
</template>
<script>
export default {
methods:{
submitTest(){
console.log('this.$session.userid>>>', this.$session.userid) // I want to see this value as 10101
}
}
}
</script>
我假设您使用的是 SPA 模式。
因此您可以使用 API 来获取该用户 ID。
router.get('/testGetUserid', function(req, res){
req.session.userid = '10101'
res.json({ userId: req.session.userid })
});
如果你想在另一个端点得到userId
,我想你可以这样做。我还没有尝试过,但我相信一旦你在 /testGetUserid
.
例如你有 /user
路线
router.get('/user', function(req, res){
const userId = req.session.userid
// do something
res.json(someJSON)
});
在 Nuxt
<script>
export default {
methods:{
submitTest(){
axios.get('/testGetUserid', { withCredentials: true }).then(res => {
// here you can get the userId, you can store it in variable or vuex
conosle.log(res.data.userId)
})
}
}
}
</script>