关注this tutorial, 我试图学习能够使用node.js,passport和angular创建一个简单的后端身份验证。
我想用角度登录用户名,但我该怎么做?
我不确定我的问题是否有意义......如果不清楚,请告诉我,我想解释一下。
我已经创建了一项服务来吸引所有用户..
service.factory('Users', ['$http', function($http){
return {
get: function(){
return $http.get('/api/users');
}
}
并在节点上
function getUsers(res){
Users.find(function(err, users) {
if (err)
res.send(err)
res.json(users);
});
};
所以我可以在数据库上注册用户,我可以得到它们。我需要将数据库上的用户与登录用户进行比较,以便登录用户可以发布或阅读..
提前致谢!
答案 0 :(得分:0)
可以通过API完成,如果尚未存在,则必须首先构建它。像/user/data
端点那样返回关于用户凭证的JSON对象。这种方法更适用于SPA(单页面应用程序)架构。
也可以通过在文档中放置一个可由Angular稍后访问的全局对象来完成。类似的东西(如果使用EJS)
<script>
<% var globalUser = req.user %>
</script>
所以Angular能够访问globalUser
变量。
答案 1 :(得分:0)
您应该仔细阅读本教程。
根据它,你应该首先 - 创建一个处理身份验证的中间件回调:
function isLoggedIn(req, res, next) {
// if user is authenticated in the session, carry on
if (req.isAuthenticated())
return next();
// if they aren't redirect them to the home page
res.redirect('/');
}
中间件的说明:
isLoggedIn:使用路由中间件,我们可以保护配置文件部分路由。用户必须登录才能访问该路由。使用isLoggedIn函数,如果用户尝试访问
http://localhost:8080/profile
并且他们没有登录,我们会将用户踢回主页。
最后 - 在您想要保护的路线中使用它:
app.get('/profile', isLoggedIn, function(req, res) {
res.render('profile.ejs', {
user : req.user // get the user out of session and pass to template
});
});