2012-12-20 49 views
1

我的应用具有保存登录凭证功能,因此我在成功登录后存储了下次使用的Cookie。但是,经过一段时间后,会话将超时并且无法登录与饼干更多。在iOS上,凭证持久性设置为永久性后,应用程序甚至重新启动手机后,工作得很好:如何在Android上设置持久性凭证持久性

[[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,所以我必须按照这个instruction

如果你有想法,请让我知道对付NTLM身份验证。

谢谢。

回答

1

您是否考虑过使用Android框架提供的Sharedpreferences?请点击此处查看更多http://developer.android.com/reference/android/content/SharedPreferences.html

+0

共享首选项仅用于基元数据类型,如何将凭据存储在那里?我想保持凭据永久性,就像我在iOS上所做的一样,而不是加密用户/密码,并在请求数据时进行登录。 – thanhbinh84

+0

是的,您可以获取凭据所需的任何数据并将其存储在sharedpreferences中供以后使用。 –

+0

您可以通过更新示例代码的答案来更详细地指定。谢谢 – thanhbinh84

0

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

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(); 
0

你看着的AccountManager?这是一个通用帐户管理器框架,专门用于管理帐户凭证,内置于Android Framework中。我之前没有使用过ntlm,所以我不能说这方面的内容,但是您可以存储“authToken”,用户名,密码,并且还有额外的存储位置(我相信Bundle)。它支持在通知给定帐户的服务器通信失败时尝试重新进行服务器身份验证。如果用户无法自动重新进行身份验证,可以再次请求用户输入其凭据。所有这些方面都暴露给开发者来定义行为。

AccountManager的优点是,它允许您让用户通过设备上的所有其他帐户在设置中管理您的帐户类型。

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*/ 
} 

这怎么可以存储和取回凭证::

希望这些可以帮助你!:)