【发布时间】:2017-06-02 00:15:54
【问题描述】:
我尝试正确实现登录过程,我正在为前端使用服务器渲染视图方法。根据sails.js 官方文档中关于设置路线的说法,所以在我的routes.js 中,我有这个:
module.exports.routes = {
'/': {
view: 'login'
},
// Server render HTML views
'POST /signup':'UserController.signup',
'PUT /login': 'UserController.login',
'GET /logout':'UserController.logout',
'GET /profile': 'PageController.showProfilePage',
'GET /dashboard': 'PageController.showDashboardPage',
'GET /products': 'PageController.showProductPage'
};
通常仪表板路线存在,所以我想做的是当我登录时,我会自动重定向到仪表板。 所以在我的 UserController.js 中,我有这个:
login : function (req, res){
//... some code here
success : function (){
if(userFound.deleted){
return res.forbidden("'Your account has been deleted.
Please visit ecommerce.com/restore to restore your account'");
}
if(userFound.banned){
return res.forbidden("'Your account has been banned
completly because you didn't respect the use term of our site");
}
// Store user id in a session
req.session.userId = userFound.id;
console.log(req.session);
res.redirect('/dashboard');
return;
}
})
})
}
最后,我有我的 PageController,我根据用户是否经过身份验证显示 Web 应用程序的所有不同视图,在本例中是仪表板。所以,这就是我的代码所说的:
showDashboardPage: function (req, res){
if(!req.session.userId){
console.log(req.session);
return res.redirect('/')
}
if(req.session.userId){
User.findOne(req.session.userId, function (err, user){
if(err){
console.log(req.session);
return res.negotiate(err);
}
if(!user){
console.log(req.session);
sails.log.verbose('Session refers to a user who no longer exist');
return res.redirect('/');
}
console.log(req.session);
return res.view('user/dashboard', {
layout: 'user/mainUserLayout',
me: {
id: user.id,
username: user.username,
fullname: user.fullname,
profilePicture: user.profilePicture,
admin: user.admin
}
});
});
}
}
当我登录时,我从服务器收到 404 not found 错误。我不知道我是否真的错过了什么。一些帮助将不胜感激。 :)
【问题讨论】:
标签: javascript sails.js