2017-02-05 1 views
2

로그인 시스템을 만들려고했지만 PHP 코드에서 세션을 가져오고 싶습니다. 세션 로그인이 false 또는 null 인 경우 로그인 페이지로 리디렉션됩니다. 여기 내 실행 AngularJS와 코드 :PHP에서 리다이렉트를 위해 AngularJS로 세션을 가져 오는 방법

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

라우팅 코드 :

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 함수 세션 코드 :

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

logincheck(); 
+1

당신은 당신의 클라이언트에 직접 PHP-세션 상태를 분석하지 않고 백엔드의 고유 한 세션 토큰을 생성해야합니다 당신은 같은 /api/logincheck

PHP 라우터를 만들 수 있습니다 . AngularJS는 SPA 용으로 제작되었습니다. 따라서 클라이언트가 API를 사용하여 백엔드와 통신하게하십시오. 예를 들어 RESTful API. 사용자가 클라이언트를 통해 로그인하면 고유 한 세션 토큰을 클라이언트에 반환합니다. 보안 데이터 HTTP 요청에이 토큰을 넣고 유효성을 검사하십시오. oAuth 처리를 살펴보십시오. – lin

+0

토큰을 만드는 방법은 무엇입니까? –

+0

예를 들어'$ token = md5 ('what-ever-you-want'); ' – lin

답변

0

다른 대답은 권리입니다. AngularJS는 SPA 용으로 만들어 졌으므로 API를 사용하여 백엔드와 통신하는 것이 좋습니다. 그러나 세션 사용을 고집한다면 괜찮습니다.

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

JS :

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

부엉이, 나는 그것을 얻었다. ........ –

0

당신은 PHP 구문 분석하지 않고 백엔드의 고유 한 세션 토큰을 생성해야합니다 세션은 고객에게 직접 진술합니다. AngularJS는 SPA 용으로 제작되었습니다. 따라서 클라이언트가 API를 사용하여 백엔드와 통신하게하십시오. 예 : RESTful API. 사용자가 클라이언트를 통해 로그인하면 고유 한 세션 토큰을 클라이언트에 반환합니다. 모든 보안 데이터 HTTP 요청에이 토큰을 넣고 유효성을 검사하십시오. 을보십시오 oAuth 취급, 그것 동일.

$token = md5('what-ever-you-want');과 같은 토큰을 만들고 API 로직에 구현할 수 있습니다. 여기에 handling security interfaces에 대한 자세한 정보가 있습니다.

enter image description here

관련 문제