Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS-使用md5密码检查登录服务中的用户/密码_Javascript_Php_Angularjs_Authentication - Fatal编程技术网

Javascript AngularJS-使用md5密码检查登录服务中的用户/密码

Javascript AngularJS-使用md5密码检查登录服务中的用户/密码,javascript,php,angularjs,authentication,Javascript,Php,Angularjs,Authentication,我已经使用angularjs创建了一个登录名——我只是尝试将它传递给我的service user.php以检查凭据,然后在经过身份验证后转发。问题是,我的密码是用md5加密的,我正试图弄清楚如何将这种编码添加到从服务发送的数据中 登录表单-login.html <div class="bs-example"> <form role="form" name="form1"> <div class="pgelogo"></div>

我已经使用angularjs创建了一个登录名——我只是尝试将它传递给我的service user.php以检查凭据,然后在经过身份验证后转发。问题是,我的密码是用md5加密的,我正试图弄清楚如何将这种编码添加到从服务发送的数据中

登录表单-login.html

    <div class="bs-example">
    <form role="form" name="form1">
    <div class="pgelogo"></div><p></p>
       <div class="form-group">
       <p>Welcome : <span>{{user.userid}}</span></p>
         <label for="exampleInputEmail1">Userid</label>
         <input type="text" placeholder="Enter name"  class="form-control" 
          ng-model="user.userid" required>
       </div>
       <div class="form-group">
         <label for="exampleInputPassword1">Password</label>
         <input type="password" name="pass" placeholder="Password"
          id="exampleInputPassword1" class="form-control" ng-model="user.pass" 
             required>
       </div>
          <button class="btn btn-default" type="submit" ng-click="login(user)" 
           ng-disabled="form1.$invalid">Submit</button>
          <p>{{msgtxt}}</p>
   </form>
   </div>
指令-logindrc.js

    'use strict';
          app.directive('loginDirective',function(){
 return{
    templateUrl:'partials/tpl/login.tpl.html'
   }
     });
服务-loginservice.js

    'use strict';

     app.controller('loginCtrl', ['$scope','loginService', 
        function ($scope,loginService) {
$scope.msgtxt='';
$scope.login=function(data){
    loginService.login(data,$scope); //call login service
   };
    }]);
   'use strict';
    app.factory('loginService',function($http, $location, sessionService){
return{
    login:function(data,scope){
        var $promise=$http.post('data/user.php',data); 
                     //send data to user.php
        $promise.then(function(msg){
            var uid=msg.data;
            var pass=msg.data;
            if(uid && pass){
                //scope.msgtxt='Correct information';
                sessionService.set('uid',uid);
                //sessionService.set('lvl',level);
                $location.path('/home');
            }          
            else  {
                scope.msgtxt='incorrect information';
                $location.path('/login');
            }                  
        });
    },
    logout:function(){
        sessionService.destroy('uid');
        //sessionService.destroy('lvl');
        $location.path('/login');
    },
    islogged:function(){
        var $checkSessionServer=$http.post('data/check_session.php');
        return $checkSessionServer;
        /*
        if(sessionService.get('user')) return true;
        else return false;
        */
    }
       }
          });
**user.php-检查用户身份验证

          ini_set("display_errors",1); 
          error_reporting(E_ALL);

         //connect to db
          require "../protected/db.php";

         //$user=json_decode(file_get_contents('php://input'));

           $user = $_SESSION['uid']=uniqid('ang_');
         //$user   = $_POST['uid'];
           $pass   = md5($_POST['pass']));

           session_start();

          if(isset($user) && isset($pass)) 
          {
         //get userid and level from users table according to 
           username and password entered
          $sql = "SELECT userid,lvl FROM dbo.users WHERE userid = ? AND psw = ?";

          $params = array($user, $pass);

      $stmt = sqlsrv_query($conn,$sql,$params);

     //if query does not work, return false
      if($stmt === false){
     die( print_r( sqlsrv_errors(), true));
      }

        $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
        if($row)
           {
              do{
        //store users session for angular to handle
         $_SESSION['uid']=uniqid('ang_');
         $_SESSION['level'] = $row['lvl'];

      //update the userlogin table with active user sesssion
       $rec = "INSERT INTO dbo.user_login (
                user_id,
                time)
                VALUES 
                (?,getdate())";

        $recparams = array($user);
        $s = sqlsrv_query($conn,$rec,$recparams);

       if( $s === false )
        {
        die( print_r( sqlsrv_errors(), true));
        }

                   } while( $row = sqlsrv_fetch_array( $stmt ) );
                 }   

               session_destroy();
               }
我能够用简单的用户名密码进行身份验证,但我需要对密码进行编码,以检查数据库中的值。我收到错误500服务错误,这意味着服务器端发生了一些事情。。。就是不能用别针指着它。任何一位angularjs大师都将感谢您在这方面的帮助。

集成此模块:

在登录表单上:login form-login.html

<input type="password" name="pass" placeholder="Password"
     id="exampleInputPassword1" class="form-control" ng-model="pass" required>

这样就解决了我的问题

以明文形式发送密码并在服务器上散列,然后在服务器上比较两个散列值,以确定equalitymd5是否已损坏,我想,我的问题也是如何将控制器中的用户名和密码分离以发送到服务?现在,它对密码进行分组,我似乎根本无法进行身份验证。此外,就密码而言,我们的许多用户使用包含特殊字符的密码。比如“M#gIC!”所以我需要一些编码方法。我使用了“htmlspecialchars”,它正确地显示了用户名,但如何使用angular服务检查这些密码?我使用它对浏览器中的文本执行MD5哈希。
app.controller('loginCtrl', ['$scope','md5','loginService', function ($scope,md5,loginService) {
    $scope.$watch('pass', function() {
        $scope.user.pass = md5.createHash($scope.pass || '');
    });
    ...
}]);