[英]What is the best way to safely process a login using AngularJS
我是Angular的新手。 我正在开发一个简单的登录表单,其中输入的用户名与从JSON查询返回的用户名进行比较。 如果找到匹配项,则处理登录。
我觉得我这样做的方式并不安全,我是否认为可以通过浏览器的控制台访问返回的JSON字符串?
一旦我理解了如何正确地解决这个问题,我将在不久的将来为此添加密码检查。
我想指出正确的方向来解决用户登录Angular方式的问题。
app.js
angular.module('userApp', ["ngResource"]).
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/login', {templateUrl: 'partials/login.html', controller: LoginCtrl}).
when('/loggedin', {templateUrl: 'partials/user-admin.html', controller: UserCtrl}).
otherwise({redirectTo: '/login'});
}],[ '$locationProvider', function($locationProvider) {
$locationProvider.html5Mode = true;
}]).
factory("User", function($resource) {
return $resource("users/:userId.json", {}, {
query: {method: "GET", params: {userId: "users"}, isArray: true}
});
});
controllers.js
function LoginCtrl($scope, $route, $routeParams, $location, User) {
$scope.users = User.query();
$scope.loginUser = function() {
var loggedin = false;
var totalUsers = $scope.users.length;
var usernameTyped = $scope.userUsername;
for( i=0; i < totalUsers; i++ ) {
if( $scope.users[i].name === usernameTyped ) {
loggedin = true;
break;
}
}
if( loggedin === true ) {
alert("login successful");
$location.path("/loggedin");
} else {
alert("username does not exist")
}
}
}
是的,你是对的 - 这不安全 。 永远不要做这样的事情:
providedPassword == stored password
) 这样做的正确方法如下:
username+password
并将其发送到服务器上的代码。 在服务器上,您计算SHA-1哈希并将其与DB中的存储值进行比较。 然后,您将身份验证的结果发送回客户端,并通过持久会话在服务器上保留它的跟踪。 请记住,大多数这些东西都是由一些安全框架完成的,比如Spring Security 。 我不建议从头开始做这一切,因为安全性主题很多,而且很容易犯恶意用户可以使用的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.