我陷入了NodeJs的某个角落。我会一步一步地解释我的系统。
用户将jwt令牌存储在本地存储
我想在用户登录时访问/个人资料页面。
以下是问题
如果用户输入/ profile到url bar,用户可以直接转到该页面,因为由于缺少http.post请求而没有授权控制。
如何在登录时检查用户是否输入了/个人资料?
我的职能如下。
var profile = function () {
var token = $window.localStorage.getItem('jwt')
return $http.post('/api/profile', {'token': token}).then(function (response) {
if(response.data.success === true){
$window.location.href = "/profile";
}else{
$window.location.href = "/login";
}
});
}
exports.profilePage = function (req, res) {
categoryModel.find(function (err, allCategories) { //NOT TO LOSE MENS OR WOMENS FROM NAVBAR !
res.render('profile', {
allCategories: allCategories
})
});
}
exports.profile = function (req, res) {
res.json({
success: true
})
}
const userController = require('../controllers/userController')
app.get('/profile', userController.profilePage);
app.post('/api/profile', userController.authenticate, userController.profile); //AUTHORIZATION REQUIRED
exports.authenticate = function (req, res, next) {
var token = req.body.token
if (token != null) { //To know that user logged in
var user = userDBModel.User().methods.verifyJWT(token)
if (user) {
return next()
} else {
return res.json({
success: false
})
}
} else {
return res.json({
success: false
})
}
}
答案 0 :(得分:0)
在这个实例中,connect-ensure-login包可以为你工作吗?如果找不到令牌,我会使用JWT / Express重定向到登录。