簡體   English   中英

如何保持用戶在Windows Phone應用中的登錄狀態?

[英]How keep user logged-in in a windows phone app?

我正在使用C#開發Windows 10通用應用程序,並且使用PHP和MySQL驗證,存儲數據並向用戶顯示數據。

因此,在登錄過程中,我將用戶電子郵件和密碼發送到PHP文件,並在那里將數據與存儲在數據庫中的數據進行比較,然后將答案(成功或失敗)發送給應用程序。

現在我有一個問題,我想知道在關閉應用程序並重新打開應用程序后,或者即使重新啟動手機或PC時如何保持用戶登錄狀態?

我搜索了這個主題,據我了解,我需要在用戶計算機上存儲一些數據,並在用戶重新打開應用程序時檢查該數據,但是我不知道該怎么做或在哪里存儲數據! 我可以直接在C#中執行此操作(Microsoft是否提供任何API),或者我需要3d方庫或...?

您的假設是正確的。 您必須在本地存儲有關用戶是否登錄的信息。為此,可以使用“本地設置”屬性。 這些類似於android studio中的共享首選項。 主要思想是在本地存儲鍵值對。 在您的情況下,您的密鑰將是一些用於恢復數據的字符串,並且您的值可以是一個布爾變量,用於存儲用戶是否登錄。 每次打開應用程序時,您將首先還原布爾值並檢查用戶是否已登錄,依此類推……這僅是關於如何使用此概念的建議,但由於您沒有提供任何代碼,我無法擴展它,並使用自己的代碼為您提供合適的示例。 在這里您可以閱讀有關如何使用LocalSettings的信息:

https://msdn.microsoft.com/zh-CN/library/windows/apps/xaml/windows.storage.applicationdata.localsettings?cs-save-lang=1&cs-lang=csharp#code-snippet-2

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM