Axios客户端

时间:2018-03-21 13:37:00

标签: javascript node.js axios

我有一个网页,让一个axios post / users请求在MongoDB中创建一个新用户。该调用工作正常,并在响应中设置标头x-auth。我可以在我的客户端JS上查看它。如果请求成功,在客户端JS我想重定向到/ dashboard页面并传递用户详细信息,以便在JS网格中加载该用户的详细信息。

我无法理解如何做到这一点?

客户端代码段:

var signupButton = jQuery('#btn-signup');
var passwordInput = jQuery('#inputPassword');
var emailInput = jQuery('#inputEmail');
var config = {
  headers: {}
};
jQuery('#form-signup').on('submit', function (e) {
e.preventDefault();
var password = passwordInput.val();
var email = emailInput.val();
axios.post('/users', {
  email,
  password
})
.then(function (response) {
  config.headers = {'x-auth': response.headers['x-auth']};
  // What do I do here?????
})
.catch(function (error) {
console.log(error);
});
});

这个想法是我的重定向url / dashboard也应该使用authenticate url进行身份验证,以避免人们直接访问该url。所以我希望,我将使用axios post的then()内的GET请求从客户端重定向到/ users。服务器将进行身份验证,然后呈现车把模板。我不明白该怎么做。

我的服务器代码段:

app.get('/dashboard', (req, res) => {
  res.render('dashboard.hbs', {
  pageTitle: 'Home Page',
  welcomeMessage: 'Welcome to my website'
  });
 });

修改

jQuery('#form-signup').on('submit', function (e) {
    e.preventDefault();
    var password = passwordInput.val();
    var email = emailInput.val();
    axios.post('/users', {
            email,
            password
        })
        .then(function (response) {
            config.headers = {'x-auth': response.headers['x-auth']};
            axios.get('/dashboard', config).then(function (response) {
                console.log(response);
                // response.data contains the entire HTML that I want to display in the browser
            })
            .catch(function (err) {
                console.log(e);
            });
        })
        .catch(function (error) {
            console.log(error);
        });
});

服务器:

app.get('/dashboard',authenticate, (req, res) => {
    res.sendFile(path.join(__dirname + "/../views/dashboard.hbs"));
    // res.render('dashboard.hbs', {
    //     pageTitle: 'Home Page',
    //     welcomeMessage: 'Welcome to my website'
    // });
});

0 个答案:

没有答案