2012-12-20 111 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*/ 
} 

這怎麼可以存儲和取回憑證::

希望這些可以幫助你!:)