nuxtjs - 全局共享可编辑服务器变量

时间:2017-10-30 18:05:34

标签: vuejs2 nuxt.js

我使用的是nuxtjs,而我使用的是针对restful API的app身份验证。我想在服务器端存储变量我的令牌,我到处使用它来请求API的信息,但我不能将它存储在process.env变量中,因为我需要在它到期时(1小时后)修改它。令牌适用于应用程序,而不适用于用户,因此每次调用api都必须使用相同的令牌。我尝试使用fs将我的令牌保存在json文件中并在它到期时刷新它,但我不能在nuxtjs中使用fs,它告诉我fs不存在,可能是因为我尝试在客户端使用它。 你知道我怎么做的吗? 谢谢

1 个答案:

答案 0 :(得分:1)

我在服务器端envirenment中使用express解决了,我不得不将服务器中间件配置放在nuxt.config.js中:

function DeleteDone(a, b, c) {
    if (a.status === 'success') {
        $("#" + a.id).remove();
    }
}

和/server/index.js文件:

const bodyParser = require('body-parser')
const session = require('express-session')

module.exports = {    
...
  serverMiddleware: [
    bodyParser.json(),
    session({
      secret: 'my-secret',
      resave: false,
      saveUninitialized: false,
      cookie: { maxAge: 3600000 }
    }),
    '~/server'
  ],
...

和我的/server/api.js文件

const express = require('express')
const api = require('./api')

// Create express router
const router = express.Router()

// Transform req & res to have the same API as express
// So we can use res.status() & res.json()
var app = express()
router.use((req, res, next) => {
  Object.setPrototypeOf(req, app.request)
  Object.setPrototypeOf(res, app.response)
  req.res = res
  res.req = req
  next()
})

router.get('/myroute', (req, res) => {
  api.get('myroute')
    .then((data) => {
      res.json({success: true})
    })
    .catch((e) => {
      res.status(500).json({ message: 'An error occurred' })
    })
})

module.exports = {
  path: '/server',
  handler: router
}