2012-04-14 12 views
1

私は、(REST Webサービスを通じて)ユーザーを認証する必要があるAndroidアプリを作成しようとしています。このアプリには、ユーザーがログインする必要がある複数のアクティビティと画面があり、ユーザーがログインしたときにウェブサイト上の投稿を追加および編集することができます。Android認証

「ConnectionManager」内でAndroidHttpクライアントを使用することが、シングルトンを行う最良の方法だと読んでいます。しかし、どこでユーザーの詳細(ユーザー名、パスワード)を保存するのですか?これはシングルトンですか?ユーザーが何かを編集/追加しようとするたびに認証する必要がありますか?

は、私はこのようなクラスの持っている必要があります。

public class ConnectionManager { 

    private static ConnectionManager instance = null; 
    private AndroidHttpClient client; 

    private ConnectionManager() { 
     client = AndroidHttpClient.newInstance("Android-Connection-Manager"); 
    } 

    public static ConnectionManager getInstance() { 
     if(instance == null) { 
      instance = new ConnectionManager(); 
     } 
     return instance; 
    } 

    public void authenticate(String username, String password) { 
     //Check for authentication here 
    } 
} 

を、以下のコードを呼び出して、ユーザーが何かない毎回:

private static ConnectionManager conn = ConnectionManager.getInstance(); 
conn.authenticate(); 

OR

は、私は、ユーザーを保存する必要がありますシングルトンの詳細

public class ConnectionManager { 

    private static ConnectionManager instance = null; 
    private AndroidHttpClient client; 

    private AppUser mLoggedInUser; 
    private boolean mAuthenticated; 

    private ConnectionManager() { 
     client = AndroidHttpClient.newInstance("Android-Connection-Manager"); 
    } 

    public static ConnectionManager getInstance() { 
     if(instance == null) { 
      instance = new ConnectionManager(); 
     } 
     return instance; 
    } 

    public void InitialiseUser(String username, String password) { 
      //Do login checks here then return true if logged in 
      mAuthenticated = true; 
    } 

    public boolean isAuthenticated() { 
      return mAuthenticated; 
    } 
} 

答えて

2

休憩サービスを管理している場合は、最初の接続でusername \ passwordを使用して認証し、認証が成功すると「トークン」をアプリに返すことができます。

あなたのアプリは今後のすべてのリクエストのhttpヘッダーにこのトークンを追加して、サービスが続行する前に有効であることを確認できます。

これは私がそれをした方法であり、うまくいきます。

+0

これは意味があるようですが、この方法は安全ですか?そして、これを達成する方法の例を知っていますか? – kiwijus

+0

セキュアにするにはSSLを使用する必要がありますが、それはすべてのサービスにとって真です。文書化された例はわかりませんが、難しくありません。 – Kuffs

+0

ええ、おそらくそれは大丈夫だろうと思った。私はちょっと見ただけでとてもシンプルに思えます。アンドロイドアプリ(HttpGet addheader)にヘッダーを追加して、Webサービスの終了時にそれを確認するだけです。私は何かを逃していませんか? – kiwijus