【问题标题】:How do I handle passport js redirects from Nuxt SSR?如何处理来自 Nuxt SSR 的护照 js 重定向?
【发布时间】:2020-04-18 00:36:37
【问题描述】:

我正在使用带有快速会话的 Nuxt SSR,并且我有一个来自服务器端的护照 JS 重定向

/**
 * POST /signup
 * Create a new local account.
 */
exports.postSignup = (req, res, next) => {
  const validationErrors = [];
  if (!validator.isEmail(req.body.email)) validationErrors.push({ msg: 'Please enter a valid email address.' });
  if (!validator.isLength(req.body.password, { min: 8 })) validationErrors.push({ msg: 'Password must be at least 8 characters long' });
  if (req.body.password !== req.body.confirmPassword) validationErrors.push({ msg: 'Passwords do not match' });

  if (validationErrors.length) {
    req.flash('errors', validationErrors);
    return res.redirect('/signup');
  }
  req.body.email = validator.normalizeEmail(req.body.email, { gmail_remove_dots: false });

  const user = new User({
    email: req.body.email,
    password: req.body.password
  });

  User.findOne({ email: req.body.email }, (err, existingUser) => {
    if (err) { return next(err); }
    if (existingUser) {
      req.flash('errors', { msg: 'Account with that email address already exists.' });
      return res.redirect('/signup');
    }
    user.save((err) => {
      if (err) { return next(err); }
      req.logIn(user, (err) => {
        if (err) {
          return next(err);
        }
        res.redirect('/');
      });
    });
  });
};

如果我调用重定向方法?它会重新加载页面并清除 Vuex 状态,对吗? 如何从护照进行此重定向,以保持 Vuex 状态不变且客户端页面不刷新

【问题讨论】:

  • 它接缝你正在使用表单提交进行注册,你必须使用 axios 或类似的东西使用异步注册并生成像res.json({success:true}) 这样的积极响应而不是res.redirect('/')

标签: vue.js vuejs2 passport.js nuxt.js


【解决方案1】:

正如@Darius 提到的那样,异步处理表单提交以避免页面刷新确实更好。但为了完整起见,我想提一下,确实存在保持 Vuex 状态的解决方案,例如vuex-persistedstate。 它可用于将状态持久化到 localStorage、sessionStorage 甚至 cookie。它也可以用作 Nuxt 插件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-08
    • 2018-02-14
    • 2020-10-01
    • 1970-01-01
    • 2016-06-14
    • 2021-11-22
    • 2021-05-22
    • 2020-02-08
    相关资源
    最近更新 更多