Authentication with AngularJS, session management and security issues with REST Api WS

后端 未结 4 864
灰色年华
灰色年华 2020-12-07 08:24

I started developing a web-app with angularJS and I\'m not sure that everything is right secured (client and server side). Security is based on a single login page, if cred

4条回答
  •  南笙
    南笙 (楼主)
    2020-12-07 08:59

    app/js/app.js
    -------------
    
    'use strict';
    // Declare app level module which depends on filters, and services
    var app= angular.module('myApp', ['ngRoute']);
    app.config(['$routeProvider', function($routeProvider) {
      $routeProvider.when('/login', {templateUrl: 'partials/login.html', controller: 'loginCtrl'});
      $routeProvider.when('/home', {templateUrl: 'partials/home.html', controller: 'homeCtrl'});
      $routeProvider.otherwise({redirectTo: '/login'});
    }]);
    
    
    app.run(function($rootScope, $location, loginService){
        var routespermission=['/home'];  //route that require login
        $rootScope.$on('$routeChangeStart', function(){
            if( routespermission.indexOf($location.path()) !=-1)
            {
                var connected=loginService.islogged();
                connected.then(function(msg){
                    if(!msg.data) $location.path('/login');
                });
            }
        });
    });
    
     app/js/controller/loginCtrl.js
    -------------------------------
    
    'use strict';
    
    app.controller('loginCtrl', ['$scope','loginService', function ($scope,loginService) {
        $scope.msgtxt='';
        $scope.login=function(data){
            loginService.login(data,$scope); //call login service
        };
    }]);
    
    app/js/directives/loginDrc.js
    -----------------------------
    'use strict';
    app.directive('loginDirective',function(){
        return{
            templateUrl:'partials/tpl/login.tpl.html'
        }
    
    });
    app/js/services/sessionService.js
    ---------------------------------
    'use strict';
    
    app.factory('sessionService', ['$http', function($http){
        return{
            set:function(key,value){
                return sessionStorage.setItem(key,value);
            },
            get:function(key){
                return sessionStorage.getItem(key);
            },
            destroy:function(key){
                $http.post('data/destroy_session.php');
                return sessionStorage.removeItem(key);
            }
        };
    }])
    
    app/js/services/loginService
    ----------------------------
    '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;
                    if(uid){
                        //scope.msgtxt='Correct information';
                        sessionService.set('uid',uid);
                        $location.path('/home');
                    }          
                    else  {
                        scope.msgtxt='incorrect information';
                        $location.path('/login');
                    }                  
                });
            },
            logout:function(){
                sessionService.destroy('uid');
                $location.path('/login');
            },
            islogged:function(){
                var $checkSessionServer=$http.post('data/check_session.php');
                return $checkSessionServer;
                /*
                if(sessionService.get('user')) return true;
                else return false;
                */
            }
        }
    
    });
    
    index.html
    ----------
    
    
    
      
      My AngularJS App
      
    
    
      

提交回复
热议问题