1

私のアプリにはログイン資格情報を保存する機能があるため、サインインに成功した後、次回の使用のために Cookie を保存します。ただし、一定期間が経過するとセッションがタイムアウトになり、Cookie を使用してログインできなくなります。iOS では、資格情報の永続性を永続的に設定すると、電話を再起動した後でもアプリが正常に動作します。

[[challenge sender] useCredential:[NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent] forAuthenticationChallenge:challenge];

Android では、このようなオプションを見つけることができません。ここに私の HttpHelper クラスからのものがあります:

((AbstractHttpClient) HttpHelper.client).getAuthSchemes().register("ntlm",new NTLMSchemeFactory());
  NTCredentials creds = new NTCredentials(user, pass, "", domain);
  ((AbstractHttpClient) HttpHelper.client).getCredentialsProvider().setCredentials(AuthScope.ANY, creds);

サーバーはSharePointなので、この指示に従ってntlm認証を処理する必要があります

アイデアがあれば、お知らせください。

ありがとうございました。

4

5 に答える 5

1

Android フレームワークによって提供される Sharedpreferences の使用を検討しましたか? 詳細については、こちらをお読みくださいhttp://developer.android.com/reference/android/content/SharedPreferences.html

于 2012-12-20T11:02:10.207 に答える
1

NTCredentials は Serializable を実装しています。

http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/auth/NTCredentials.html

エラー処理なしで簡略化:

保存:

FileOutputStream fos = openFileOutput("MyFileName", Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(creds);
os.close();

読み込み中:

FileInputStream fis = openFileInput("MyFileName");
ObjectInputStream is = new ObjectInputStream(fis);
NTCredentials creds = (NTCredentials) is.readObject();
is.close();
于 2012-12-24T09:03:54.927 に答える
0

を見たことがありAccountManagerますか?これは、特にアカウント資格情報を管理するために Android フレームワークに組み込まれている一般的なアカウント マネージャー フレームワークです。以前に ntlm を使用したことがないため、その点について話すことはできませんが、「authToken」、ユーザー名、パスワードを保存することが許可されており、データを保存するための追加の場所もあります ( Bundle. 指定されたアカウントでサーバー通信が失敗したことが通知されたときに、サーバーとの再認証を試みることをサポートします。また、自動的に再認証できない場合は、ユーザーに資格情報の再入力を要求できます。これらの側面はすべて、開発者が動作を定義できるように公開されています。

の利点はAccountManager、ユーザーがデバイス上の他のすべてのアカウントと共に設定でアカウントの種類を管理できるようにすることです。

于 2012-12-28T21:24:31.573 に答える
0

キーと値のペアを保存するために推奨される資格情報を保存するために SharedPreference を非常にうまく使用できます

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();

  editor.putString("Name","Harneet");//adding Harneet(value) in Name(key) pairs which can be fetched later with the help of key i.e. Name(key)
  editor.commit(); // saving the preferences

共有プリファレンスから値を取得するには:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("Name","");
if(!name.equalsIgnoreCase(""))
 {
  name = name+"  Sethi";  /* Edit the value here*/
 } 

これらは、資格情報を保存および取得する方法です::

これらがあなたを助けることを願っています!! :)

于 2012-12-30T07:13:01.303 に答える
0

Shared Preference を使用して資格情報を保存し、デバイス側に保存できます。

于 2012-12-20T11:05:45.193 に答える