我有一个网页,让一个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'
// });
});