Angular:登录用户名?

时间:2015-01-01 14:21:06

标签: angularjs node.js

关注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);
    });
};

所以我可以在数据库上注册用户,我可以得到它们。我需要将数据库上的用户与登录用户进行比较,以便登录用户可以发布或阅读..

提前致谢!

2 个答案:

答案 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
    });
});