2012-12-11 42 views
0

我在做一個應用程序,我需要用POST cUrl作者:呼叫對用戶進行認證:使用Session與Silex的和捲曲

$app = new Silex\Application(); 

$app->register(new Silex\Provider\SessionServiceProvider()); 

$app['debug'] = true; 

$app->post('/api/auth/login', function (Request $request) use ($app) { 
    if ($request->get('username') === 'admin' && $request->get('password') === 'admin') { 
     return $app->json(array('sessionId' => $app['session']->getId())); 
    } else { 
     $error = array('message' => 'Authentication failed'); 
     return $app->json($error, 404); 
    } 
}); 

當我使用:

curl -X POST -d username=admin -d password=admin http://app.local/api/auth/login 
每次

我的應用程序返回我一個不同的會話標識符!

+1

好吧,它只會發送相同的標識符,如果你還記得它...指定'--cookie-jar路徑到cookie存儲 - cookie路徑到cookie存儲'... – Wrikken

回答

1

PHP代碼:

<?php 

    require_once __DIR__ . '/../vendor/autoload.php'; 

    use Symfony\Component\HttpFoundation\Response; 
    use Symfony\Component\HttpFoundation\Request; 

    $app = new Silex\Application(); 
    $app['debug'] = true; 

    $app->register(new Silex\Provider\SessionServiceProvider()); 

    $app->before(function ($request) { 
     $request->getSession()->start(); 
    }); 

    $app->post('/api/auth/login', function (Request $request) use ($app) { 
     if ($request->get('username') === 'admin' && $request->get('password') === 'admin') { 
      return $app->json(array('sessionId' => $app['session']->getId())); 
     } else { 
      $error = array('message' => 'Authentication failed'); 
      return $app->json($error, 404); 
     } 
    }); 

    $app->run(); 

?> 

curl命令:

curl -X POST -d username=admin -d password=admin http://app.local/api/auth/login --cookie-jar ./cookie --cookie ./cookie 

上面的命令將寫入當前工作目錄中的 「cookie」 文件。請檢查目錄是否可寫,或者用戶是否具有正確的權限。