![](/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.