Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何让用户登录windows phone应用程序?_C#_Login_Win Universal App - Fatal编程技术网

C# 如何让用户登录windows phone应用程序?

C# 如何让用户登录windows phone应用程序?,c#,login,win-universal-app,C#,Login,Win Universal App,我正在使用C#开发一个Windows10通用应用程序,我使用PHP和MySQL来验证、存储数据并向用户显示数据 因此,在登录过程中,我向PHP文件发送用户电子邮件和密码,然后将数据与存储在数据库中的数据进行比较,并向应用程序发送答案(成功或失败) 现在我有一个问题,我想知道在用户关闭并重新打开应用程序后,或者即使他们重新启动手机或PC,我如何让他们保持登录 我搜索了这个主题,据我所知,我需要在用户机器上存储一些数据,并在用户重新打开应用程序时检查这些数据,但我不知道如何才能做到这一点,也不知道在

我正在使用C#开发一个Windows10通用应用程序,我使用PHP和MySQL来验证、存储数据并向用户显示数据

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

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


我搜索了这个主题,据我所知,我需要在用户机器上存储一些数据,并在用户重新打开应用程序时检查这些数据,但我不知道如何才能做到这一点,也不知道在哪里存储数据!我可以直接在C#(微软是否有API)中这样做,或者我需要一个3d派对库或者

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


您可以使用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;
        }
    }
公共无效集(字符串键,T值)
{
string serialized=JsonConvert.serialized对象(值);
var settings=ApplicationData.Current.LocalSettings.Values;
如果(!settings.Keys.Contains(key))
{
设置。添加(键,序列化);
}
其他的
{
设置[键]=序列化;
}
}
私有bool TryGet(字符串键,out T结果)
{
var settings=ApplicationData.Current.LocalSettings.Values;
如果(!settings.Keys.Contains(key))
{
结果=默认值(T);
返回false;
}
var值=设置[键]为字符串;
尝试
{
结果=JsonConvert.DeserializeObject(值,typeof(T));
返回true;
}
抓住
{
结果=默认值(T);
返回false;
}
}

@stuartd谢谢:)非常感谢,我想我现在可以管理这项工作了,我只需要了解如何做,这就是为什么我没有发送任何代码!谢谢你澄清这一点:)