我正在尝试使用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
});