2016-08-31 9 views
2

私は、PHPで書かれた自分のサーバーとやり取りするAndroidアプリを持っています。私はAndroidアプリケーションからPOST経由で呼び出され、JSON形式でanswerdされるいくつかのリクエストを行っています。Android - > PHPセッション管理

私はログインリクエストがあり、アンドロイドアプリケーションはサーバーに資格(パスワードとユーザー名)を送信します。 sucessfulでログインすると、session_IDが回答として送信されます。ユーザーの認証が必要なその他すべての要求に対しては、session_IDが必要です。そのsession_IDが設定されていない場合、私はユーザーがログに記録されていないことを告げるでしょう。それ以外の場合は、session_IDが存在する場合は、要求されたデータでリクエストに答えます。

次のコードで認証を確認します。

if(!isset($_POST['session_ID'])) 
{ 

    $json[] = array(
     'return' => $errors_authentification, 
     'error_msg' => "User not authenticated" 
    ); 

    echo json_encode($json); 
    return; 
} 

session_id($_POST['session_ID']); 
session_start(); 

これは良いアプローチだと思いますか?私はポストの代わりにsession_IDの代わりにトークンについて話を見てきましたが、認証が必要なアンドロイド - PHPの対話に対処するのは違いですか?

+0

[AndroidとPHP - セッションを使用する必要がありますか?](http://stackoverflow.com/questions/9814254/android-and-php-do-i-need-to-use-sessions) – halfer

答えて

0

ログイン後にユーザー認証を解決するには、JWTというJSON Webトークンがあります。これは、クライアント側でセッションを保存する簡単な方法です。 。

JWTは、サーバーから送信されたデータ(ユーザーIDなど)がサーバーに送信され、サーバーによって署名されたときにユーザーがそのデータを改ざんできないようにします。

アカウントIDや関連データを取得するためにサーバー側でデータベースクエリなどを実行する必要はありません。クライアントによって送信されたデータに署名があるかどうかを確認した後、サーバーのCPUサイクルを節約することができます。ただし、オーバーヘッドはわずかですが、JWTを送信するにはデータ交換が必要ですが、必要に応じて小型にすることができます。

トークンは、これらのIDを使用するためにクライアントでも使用できるため、クライアントサイドのデータを「キャッシュ」するのが好きです。

MITMシナリオでIDを取得できない限り、あなたのアプローチは簡単で、何の努力も必要なく、クッキーとして安全です。