使用AngularJS和NodeJS以及MongoDB进行设置登录

时间:2017-01-23 18:58:00

标签: angularjs node.js mongodb express

我正在尝试使用AngularJS和NodeJS为我的 ADMINISTRATOR 应用设置登录页面。 我在Mongo数据库中有一个硬编码的用户名和密码,如下所示:

{
    "userName": "david",
    "password": "hello123"
}

现在它非常简单,如果我在登录表单中插入:
用户名: john
密码: bye123
输出(在控制台中)是user doesn't exist!
现在,如果我插入登录表单:
用户名: david
密码: hello123
输出是 - logged in succesfully好的。

现在我正在寻找一种方法来确保我的应用安全,可能使用令牌或类似的东西。我对这些方法并不熟悉。 我想要一个代码示例或解释将安全代码放在我的应用程序中的位置。

以下是客户端的控制器:

signInController.js

 app.controller('signInController', function ($scope, $http) {
            $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
                         options.async = true;});
   $scope.signing = function (user) {

    console.log('in sign in');

    if ($scope.inForm.$valid) {

            console.log('after validation');

             var data = $.param({
            userName : user.userName,
            password : user.password
        });
                var config = {
                headers : {
                    'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
                    }
                }
        $http.post('/admin/signIn', data, config)
                      .success(function (data, status, headers, config) {
                       $scope.PostDataResponse = data;
                       console.log( data);
                       console.log('after login');

                window.location.replace('#/dashboard');
                console.log("Success");
            })
                        .error(function (data, status, header, config) {
                            console.log("Error: "+data);
                            $scope.ResponseDetails = "Data: " + data +
                                "<hr />status: " + status +
                                "<hr />headers: " + header +
                                "<hr />config: " + config;
             });  
     }             
}});

以下是服务器端的控制器:

user.controller.js

    var qs = require('querystring');
    var User = require('../models/User');
    module.exports = {
       signIn: signIn
   }

   function signIn(req, res) {
          console.log("get post request in server side");  

    var body = '';
      req.on('data', function (data) {
           body += data;
           // 1e6 === 1 * Math.pow(10, 6) === 1 * 1000000 ~~~ 1MB
           if (body.length > 1e6) { 
              // FLOOD ATTACK OR FAULTY CLIENT, NUKE REQUEST
              req.connection.destroy();
          }
     });   
     req.on('end', function () {
     var POST = qs.parse(body); 
     var existUser = new User({ userName : POST.userName,password :  POST.password });
            User.findOne({  userName: existUser.userName}, function (err, user) {
              if (user) {

                if(user.password != existUser.password)
                {
                       res.send("Incorrect password");
                }
                else
                {

                    res.send("logged in succesfully");
                }

           }
            else {
                console.log(user);
                res.send("user doesn't exist!");
            }
        });

    });}

这就是我的用户模型:

User.js

var mongoose = require('mongoose');
var Schema= mongoose.Schema;

module.exports = mongoose.model('User',{

    userName : String,
    password : String
  });

0 个答案:

没有答案