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 实现了可序列化。

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

您可以使用 Shared Preference 来存储您的凭据以将其保存在设备端。

于 2012-12-20T11:05:45.193 回答
0

你看过AccountManager吗?它是一个内置于 Android 框架中的通用帐户管理器框架,专门用于管理帐户凭据。我以前没用过 ntlm,所以我不能说这方面,但你可以存储一个“authToken”、用户名、密码,并且还有额外的存储数据的位置(我相信 a 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 回答