使用AngularJS-NodeJS进行身份验证

使用AngularJS-NodeJS进行身份验证,angularjs,node.js,yeoman,Angularjs,Node.js,Yeoman,我不知道如何在我的AngularJS应用程序中进行简单的身份验证。 使用我的设置进行正常服务器端身份验证的最佳和最简单的方法是什么: Yeoman角发电机,运行grunt服务器:9000。 有人有好的教程吗?还有什么建议吗 另一个问题是,使用此设置存储数据的最简单方法是什么?使用MongoDB 谢谢:)Angularjs确实没有参与身份验证过程。 身份验证的基本流程非常简单: 您从“Angularjs应用程序”(客户端应用程序)向服务器发出post请求,并将一对用户名/密码作为参数传递。 然后,

我不知道如何在我的AngularJS应用程序中进行简单的身份验证。 使用我的设置进行正常服务器端身份验证的最佳和最简单的方法是什么: Yeoman角发电机,运行grunt服务器:9000。 有人有好的教程吗?还有什么建议吗

另一个问题是,使用此设置存储数据的最简单方法是什么?使用MongoDB


谢谢:)

Angularjs确实没有参与身份验证过程。 身份验证的基本流程非常简单: 您从“Angularjs应用程序”(客户端应用程序)向服务器发出post请求,并将一对用户名/密码作为参数传递。 然后,在nodejs应用程序(服务器端)上,查询数据库以查找提供的用户名,并尝试将post请求中发送的密码与存储在与该用户相关的数据库中的密码相匹配。如果它们匹配,则在用户的客户端上设置一个cookie,该cookie与存储在数据库中的会话相关。 为了简化这个过程,有一些库可以帮助您。 您可以将passport.js()与express()一起使用。Passport将帮助您以安全的方式轻松设置身份验证过程,express将为您提供cookie解析器、会话支持等工具,以及您需要使用的其他工具。Express还将帮助您设置一个端点,您将在其中发布登录请求。 最后,为了存储数据,您可以使用任何您想要的数据库。
Nodejs拥有相关数量的第三方库,可以帮助与数据库进行接口。如果您想使用mongodb,这个库()将使您的生活变得轻松

AngularJS是一个前端JavaScript框架,您可以在应用程序的后端使用任何您选择的、喜爱和了解的东西。这个问题就像你在问“我在使用HTML5,我的后端应该使用什么?”Angluar可以与许多服务器端语言一起使用,即。Ruby,Node,PHP

  • 大卫·布莱恩特·科普兰(David Bryant Copeland)在《Ruby on Rails+Angular》中发表了一篇精彩的演讲
  • 如果你想使用PHP,你可以使用任何让你感到舒服的框架,有很多 可用。是流行的PHP框架之一
  • 如果您想为您的应用程序使用节点,可以 有意思。MEAN Stack是即将出现的新事物,MEAN代表MongoDB+Express.js+Angular.js+Node.js。有一个现成的Yoeman平均堆栈生成器可用
同样,根据需要,您应该在SQL或NoSQL数据库之间进行选择。在一定程度上还取决于服务器端语言的选择

  • 如果您需要一个存储分层数据的可伸缩数据库,那么NoSQL应该是您的选择。MongoDB是一个流行的NoSQL数据库;CouchDB、Deb是其他的替代方案
  • SQL数据库用于应用程序需要高事务处理的地方。虽然我们可以将NoSQL数据库用于基于事务的应用程序,但与SQL数据库相比,它并不稳定。MySQL是最常用的SQL数据库

您最好使用angular fullstack生成器,因为它内置了基本身份验证(本地和oAuth)。从这里,您可以只使用为您设置的身份验证,也可以将其用作参考,以帮助您了解其工作原理

我使用的最简单的设置是:

  • NodeJS/Express/Passport/Socket.io/MongoDB(实际上可以是其他任何东西)
  • 安格拉斯
Express正在处理Passport的所有安全性(Express
req
自动添加了Passport方法,使您能够检查用户是否经过身份验证)。它被称为
isAuthenticated
,您可以按如下方式使用它:

function loggedOnly(req, res, next) {
    if (req.isAuthenticated()) {
        next();
    } else {
        res.redirect('/');
    }
} 
路由/&/login是公共的,但当用户登录时,它们会重定向到/app。 Route/app是Angular应用程序,它是私有的,在用户未经身份验证时重定向到/登录

app.get('/', anonOnly);
Socket.io具有
passport.socketio
中间件,用于自动拒绝可能发生的未授权连接

然后,我通过执行以下操作访问用户对象:

io.on('connection', function(socket) {
      var user = socket.conn.request.user;
});
总之,登录逻辑由静态Express视图处理。此外,Express会将少量的
常量打印到包含例如用户数据的Angular app。在某些情况下显示用户名非常有用


虽然这可能需要一些时间来设置,但如果你想了解应用程序的整个逻辑,这绝对值得一做。我已经给了你要使用的开源软件包的名称,所有的细节都可以在他们的自述和指南中找到(如果你用谷歌搜索一段时间的话,很多已经存在了)

我试图让angularfullstack至少工作3个小时,但它不起作用。npm install命令总是抛出SSL认证错误。您正在发出命令
sudo npm install-g generator angular fullstack
?不,我可以抛出整个yeoman angular fullstack generator的安装过程,bower install也在这个过程中工作,但是当它启动节点模块的npm安装任务时,我因为SSL认证而出错您是否在yeoman完成其工作后尝试运行
npm install