Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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 如何将PHP会话转换为AngularJS进行重定向_Javascript_Php_Angularjs - Fatal编程技术网

Javascript 如何将PHP会话转换为AngularJS进行重定向

Javascript 如何将PHP会话转换为AngularJS进行重定向,javascript,php,angularjs,Javascript,Php,Angularjs,我试图建立一个登录系统,但我想会话可以采取从PHP代码。如果会话登录为false或null,它将重定向到登录页面。 下面是我的RunAngularJS代码: app.run(["$rootScope", 'adminService', '$location', function($rootScope, adminService, $location) { $rootScope.$on("$routeChangeStart", function() { $location.

我试图建立一个登录系统,但我想会话可以采取从PHP代码。如果会话登录为
false
null
,它将重定向到登录页面。 下面是我的RunAngularJS代码:

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();

您应该在后端创建一个唯一的会话令牌,而无需将PHP会话状态直接解析到客户端。记住,AngularJS是为水疗而设计的。因此,让您的客户端通过使用API与后端通信。比如一个。用户通过客户端登录后,向客户端返回唯一的会话令牌。在每个安全数据HTTP请求上放置并验证此令牌。请看一下oAuth处理,它是相同的

您可以简单地创建一个令牌,如下所示:
$token=md5('what-ever-You-want')并将其实现到API逻辑中。在这里,您将找到有关的更多信息


另一个答案是正确的。使用API与后端通信是一种很好的做法,因为AngularJS是为SPA设计的。但是,如果您坚持使用会话,则可以。您可以创建路由器,例如
/api/logincheck

PHP:

JS:


您应该在后端创建一个唯一的会话令牌,而无需将PHP会话状态直接解析到客户端。记住,AngularJS是为水疗而设计的。因此,让您的客户端通过使用API与后端通信。例如,RESTful API。用户通过客户端登录后,向客户端返回唯一的会话令牌。在任何安全数据HTTP请求上放置并验证此令牌。看看oAuth处理,也是一样的。如何生成令牌?例如
$token=md5('what-ever-you-want')我明白了,谢谢林。
public function index()
{
    $res = ['login'=>false];
    if(isset($_SESSION['authid']))
    {
        $res['login'] = true;
    }
    echo json_encode($res);
}
$http.get('http://XX/api/checklogin').success(function(res){
    if(res.login)
    {
        #handle it
    }
});