如何让用户登录Windows手机应用程序?

时间:2017-01-18 14:23:52

标签: c# login win-universal-app

我正在使用C#开发Windows 10通用应用程序,我使用PHP和MySQL来验证,存储和向用户显示数据。

因此,在登录过程中,我将用户电子邮件和密码发送到PHP文件,然后我将数据与存储在数据库中的数据进行比较,并向应用程序发送答案(成功或失败)。

现在我有一个问题,我想知道如何让用户在关闭应用程序并重新打开后立即登录,或者即使他们重新启动手机或PC也是如此?

我搜索了这个主题,据我所知,我需要在用户机器上存储一些数据并在用户重新打开应用程序时检查数据,但我不明白我该怎么做或在哪里存储数据!我可以直接在C#(微软任何API)或我需要3D派对库或......?

这样做

2 个答案:

答案 0 :(得分:0)

你的假设是正确的。您必须在本地存储有关用户是否已登录的信息。为此,您可以使用“本地设置”属性。这些类似于android studio中的共享首选项。主要思想是在本地存储键值对。在您的情况下,您的密钥将是一些用于恢复数据的字符串,您的值可能是一个布尔变量,用于存储用户是否登录。每次打开应用程序时,您将首先恢复布尔值并检查用户是否已登录等等......这只是如何使用此概念的建议,但由于您没有提供任何代码我不能扩展它并使用您自己的代码为您提供一个正确的示例。在这里,您可以阅读如何使用LocalSettings:

  

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

答案 1 :(得分:0)

您可以使用ApplicationData.Current.LocalSettings来存储和获取值。

我更喜欢序列化对象并存储序列化字符串,因为这样你也可以存储复杂的类型。但是你也可以跳过我序列化的部分,然后在这里添加你的bool。

下面是一些通用代码:

    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;
        }
    }
相关问题