【问题标题】:Nuxt : How to get the session values from expressNuxt:如何从 express 中获取会话值
【发布时间】:2021-12-16 00:15:36
【问题描述】:

我试图通过this.$session.userid从 Nuxt 中的快速会话 (req.session.userid) 中获取值,但无法在 console.log 中获取值。

它只是显示“无法读取未定义的属性(读取'userid')”

如果我得到 this.$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>

【问题讨论】:

  • 据我所知,express-session 会将 cookie 保存为 httpOnly cookie,您的浏览器/客户端无法访问该 cookie。不过,您只能从后端访问它。
  • 哦,谢谢您的信息。那怎么把后面的值传给Vue.js呢?

标签: node.js vue.js express nuxt.js


【解决方案1】:

我假设您使用的是 SPA 模式。

因此您可以使用 API 来获取该 userId。

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)
});

在努克特

<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>

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 2020-10-13
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    相关资源
    最近更新 更多