2017-02-05 4 views
2

Ich versuche, ein Login-System gemacht, aber ich möchte die Sitzung aus PHP-Code genommen werden. Wenn die Sitzungsanmeldung false oder null lautet, wird auf die Anmeldeseite umgeleitet. Hier Code meine laufen AngularJS:Wie bekomme ich Session von PHP in AngularJS für Redirect

app.run(["$rootScope", 'adminService', '$location', function($rootScope, adminService, $location) { 
    $rootScope.$on("$routeChangeStart", function() { 
     $location.path('/login'); 
    }); 
}]); 

Routing code:

app.config(function($routeProvider){ 
    $routeProvider.when('/', { 
     templateUrl: 'welcome.html' 
    }).when('/administrator', { 
     templateUrl: './part/administrator.html', 
     controller: 'adminPageControl' 
    }).when('/administrator/:id_admin', { 
     templateUrl: './part/addit-administrator.html', 
    }).when('/alternatif', { 
     templateUrl: './part/alternatif.html', 
     controller: 'alternatifPageControl' 
    }).when('/alternatif/:id_alternatif', { 
     templateUrl: './part/addit-alternatif.html' 
    }).when('/skala', { 
     templateUrl: './part/skala.html', 
     controller: 'skalaPageControl' 
    }).when('/skala/:id_skala', { 
     templateUrl: './part/addit-skala.html' 
    }).when('/kriteria', { 
     templateUrl: './part/kriteria.html', 
     controller: 'kriteriaPageControl' 
    }).when('/kriteria/:id_kriteria', { 
     templateUrl: './part/addit-kriteria.html' 
    }).when('/klasifikasi', { 
     templateUrl: './part/klasifikasi.html', 
     controller: 'klasifikasiPageControl' 
    }).when('/klasifikasi/:id_klasifikasi', { 
     templateUrl: './part/addit-klasifikasi.html' 
    }).when('/analisis', { 
     templateUrl: './part/topsis.php', 
     controller: 'analisisPageControl' 
    }).when('/login', { 
     templateUrl: './login.html' 
    }).when('/logout', { 
     template: 'logout' 
    }).otherwise({ 
     redirectTo: '/' 
    }); 
}); 

PHP-Funktion Sitzungscode:

function logincheck(){ 
    return $_SESSION['authid']; 
} 

logincheck(); 
+1

Sie sollten ohne Parsen der PHP-Session Staaten direkt in Ihr Client eine eindeutige Sitzungs-Token im Backend erstellen . Denken Sie daran, AngularJS ist für SPA gemacht. Stellen Sie also sicher, dass Ihr Client über eine API mit dem Backend kommuniziert. Zum Beispiel eine RESTful API. Sobald sich der Benutzer über den Client angemeldet hat, geben Sie ein eindeutiges Sitzungstoken an den Client zurück. Setzen und validieren Sie dieses Token auf einer gesicherten Daten-HTTP-Anfrage. Werfen Sie einen Blick auf oAuth Handhabung, es ist das gleiche. – lin

+0

Wie mache ich ein Token? –

+0

Zum Beispiel '$ token = md5 ('was immer du willst');' – lin

Antwort

0

Die andere Antwort ist richtig. Es empfiehlt sich, mit dem Backend über eine API zu kommunizieren, da AngularJS für SPA entwickelt wurde. Wenn Sie jedoch darauf bestehen, Sitzung zu verwenden, ist es in Ordnung.

public function index() 
{ 
    $res = ['login'=>false]; 
    if(isset($_SESSION['authid'])) 
    { 
     $res['login'] = true; 
    } 
    echo json_encode($res); 
} 

JS: Sie können einen Router wie /api/logincheck

PHP erstellen

$http.get('http://XX/api/checklogin').success(function(res){ 
    if(res.login) 
    { 
     #handle it 
    } 
}); 
+0

booom, ich habe es ........ –

0

Sie sollten ohne Parsen der PHP eine eindeutige Sitzungs-Token im Backend erstellen -Session steht direkt in Ihrem Client. Denken Sie daran, AngularJS ist für SPA gemacht. Stellen Sie also sicher, dass Ihr Client über eine API mit dem Backend kommuniziert. Zum Beispiel ein RESTful API. Sobald sich der Benutzer über den Client angemeldet hat, geben Sie ein eindeutiges Sitzungstoken an den Client zurück. Setzen und validieren Sie dieses Token für jede gesicherte HTTP-Anfrage. Werfen Sie einen Blick auf oAuth Handhabung, es ist das gleiche.

Sie könnten einfach ein Token erstellen wie: $token = md5('what-ever-you-want'); und implementieren Sie es in Ihre API-Logik. Hier finden Sie weitere Informationen zu handling security interfaces.

enter image description here

Verwandte Themen