AngularJs:服务器端用户名和密码验证

时间:2015-07-21 03:46:23

标签: angularjs

我是angularjs的新手,并尝试编写用于登录验证的代码。以下是我的代码,用于检查输入的用户名和密码是否正确。按下登录按钮后,如果用户名或密码不正确,如何显示“无效的用户名”和“无效密码”消息?我想显示错误消息而不是使用alert.Thank you。

<script>
        var app=angular.module("app",[]);
        app.controller("MainCtrl",function($scope,$http,$window) {
        $scope.checkLogin = function(result) {
            //$http.get("login.jsp")
                          $http.get("login.jsp?sqlStr=select UsrNm,UsrPwd from dbo.tblUsr where UsrNm = '" + $scope.user_name + "'")
            .success(function(response) {
                $scope.myData = response;
                if(!angular.isObject($scope.myData[0]))
                                                alert("Invalid user name");

                else
                {
                    if($scope.myData[0].USRPWD!== $scope.password)
                        alert("Invalid password");
                    else
                        //alert("Successfully logged in");
                        $window.location.href = 'MainPage.html';
                }
            })
            .error(function(){
                alert("Resource not found");

            });
            };
        });
    </script>

1 个答案:

答案 0 :(得分:0)

这样的事情会起作用:

<script>
    var app=angular.module("app",[]);
    app.controller("MainCtrl",function($scope,$http,$window) {
    $scope.checkLogin = function(result) {
        //$http.get("login.jsp")
                      $http.get("login.jsp?sqlStr=select UsrNm,UsrPwd from dbo.tblUsr where UsrNm = '" + $scope.user_name + "'")
        .success(function(response) {
            $scope.myData = response;
            if(!angular.isObject($scope.myData[0]))
                                            alert("Invalid user name");

            else
            {
                if($scope.myData[0].USRPWD!== $scope.password)
                    alert("Invalid password");
                    $scope.hasError = true;
                    $scope.errorText = "Invalid Password";
                else
                    //alert("Successfully logged in");
                    $window.location.href = 'MainPage.html';
                    $scope.hasError = false;
                    $scope.errorText = "";
            }
        })
        .error(function(){
            alert("Resource not found");
            $scope.hasError = true;
        });
        };
    });

并在你的HTML中:

<div ng-show="hasError">{{errorText}}</div>

编辑 - 这是验证密码的一种不好的方法,因为它看起来像是从服务器传回密码。不要这样做,它非常非常不安全。您应该使用服务器上的哈希进行验证,然后将授权或拒绝传递回客户端。此外,如果您在任何时候以纯文本方式传输密码,请务必使用SSL。