在ajax请求之后保持服务器端应用程序上的会话 - 跨域

时间:2017-08-31 05:39:58

标签: php ajax cordova session cross-domain

我使用PHPSlim Framework内置了一个服务器端Web应用程序。此应用程序仅向跨域上的另一个提供Web服务。我正在使用AJAX请求创建登录信息。

作为另一个域的client-side应用程序已内置ReactJS,实际上我正在构建Phonegap应用程序。我从client-side应用程序发送登录请求,以使用AJAX检查和匹配凭据,如果匹配其JSON数组中的返回用户数据。这就是我现在的工作方式:

问题:成功登录后,我还尝试在我的server-side应用程序中存储或创建会话,以便在用户登录时验证其他一些请求。我也在存储cookie ,但也想存储一些安全数据存储的会话。但会话不会在AJAX请求中存储或创建。

如何从跨域创建或存储有关AJAX请求的会话?

我的代码如下:

服务器端:

$app->get('/login/{username}/{password}', function (Request $request, Response $response) {

    $username = $request->getAttribute('username');
    $password = $request->getAttribute('password');

    $user = $this->eloquent->table('u')
                        ->select('*')
                            ->where('username', $username)
                            ->where('password', $password)->get();
    $_SESSION['user_auth'] = 1;
    $response->getBody()->write(json_encode($user));

    return $response;
});

客户端:

$.ajax({
            url : config.remoteAddr + '/login/' + username + '/' + password,
            type : 'get',
            dataType : 'json',
            async : false,
        }).done(function(data){
            if(data[0]){
                alert('loggedin');
                console.log(data);
                cookie.set('auth', '1', {path : '/'});
                cookie.set('userId', data[0].id , {path : '/'});
                error = false;
            }
        }).fail(function(){
            console.log('fail');
        })

0 个答案:

没有答案