![](/img/trans.png)
[英]Keycloak: How to make authentication automatic for logged-in Windows user?
[英]How keep user logged-in in a windows phone app?
我正在使用C#開發Windows 10通用應用程序,並且使用PHP和MySQL驗證,存儲數據並向用戶顯示數據。
因此,在登錄過程中,我將用戶電子郵件和密碼發送到PHP文件,並在那里將數據與存儲在數據庫中的數據進行比較,然后將答案(成功或失敗)發送給應用程序。
現在我有一個問題,我想知道在關閉應用程序並重新打開應用程序后,或者即使重新啟動手機或PC時如何保持用戶登錄狀態?
我搜索了這個主題,據我了解,我需要在用戶計算機上存儲一些數據,並在用戶重新打開應用程序時檢查該數據,但是我不知道該怎么做或在哪里存儲數據! 我可以直接在C#中執行此操作(Microsoft是否提供任何API),或者我需要3d方庫或...?
您的假設是正確的。 您必須在本地存儲有關用戶是否登錄的信息。為此,可以使用“本地設置”屬性。 這些類似於android studio中的共享首選項。 主要思想是在本地存儲鍵值對。 在您的情況下,您的密鑰將是一些用於恢復數據的字符串,並且您的值可以是一個布爾變量,用於存儲用戶是否登錄。 每次打開應用程序時,您將首先還原布爾值並檢查用戶是否已登錄,依此類推……這僅是關於如何使用此概念的建議,但由於您沒有提供任何代碼,我無法擴展它,並使用自己的代碼為您提供合適的示例。 在這里您可以閱讀有關如何使用LocalSettings的信息:
您可以使用ApplicationData.Current.LocalSettings來存儲和獲取值。
我更喜歡序列化對象並存儲序列化的字符串,因為那樣您還可以存儲復雜的類型。 但是您也可以跳過我序列化的部分,只需在此處添加您的布爾值即可。
以下是一些通用代碼:
public void Set<T>(string key, T value)
{
string serialized = JsonConvert.SerializeObject(value);
var settings = ApplicationData.Current.LocalSettings.Values;
if (!settings.Keys.Contains(key))
{
settings.Add(key, serialized);
}
else
{
settings[key] = serialized;
}
}
private bool TryGet<T>(string key, out T result)
{
var settings = ApplicationData.Current.LocalSettings.Values;
if (!settings.Keys.Contains(key))
{
result = default(T);
return false;
}
var value = settings[key] as string;
try
{
result = JsonConvert.DeserializeObject(value, typeof(T));
return true;
}
catch
{
result = default(T);
return false;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.