在本地存储"remember me"信息 c#(新手总数)



我几天前开始用c#编程,所以我在这方面完全是新手。根据我在其他语言方面的经验,我觉得它有点"简单"。

我正在构建一个系统,用户可以登录到我的应用程序,该系统正在运行。我想有一个"记住我"的设置,信息存储在本地。最好的方法是什么?我只保存用户名和密码散列。

编辑:这是一个桌面应用程序。只需使用HttpWebRequest 即可将登录信息发送到php脚本

您可以使用ConfigurationManager类来管理应用程序的设置。

您可以使用此功能将新密钥添加到您的配置文件中:

public bool setSetting(string pstrKey, string pstrValue)
{
    Configuration objConfigFile =
        ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    bool blnKeyExists = false;
    foreach (string strKey in objConfigFile.AppSettings.Settings.AllKeys)
    {
        if (strKey == pstrKey)
        {
            blnKeyExists = true;
            objConfigFile.AppSettings.Settings[pstrKey].Value = pstrValue;
            break;
        }
    }
    if (!blnKeyExists)
    {
        objConfigFile.AppSettings.Settings.Add(pstrKey, pstrValue);
    }
    objConfigFile.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection("appSettings");
    return true;
}

然后保存您的用户名(例如)

setSetting("username", usernameTextBox.Text);

一旦您的应用程序启动,您就可以从ConfigurationManager 中读取之前保存的信息

usernameTextBox.Text = ConfigurationManager.AppSettings["username"];

您可以在C#中创建应用程序设置

这是你要做的。

别忘了加密它。

如果您使用的是ASP.NET,您可以在登录用户时通过第二个参数设置身份验证cookie

FormsAuthentication.SetAuthCookie(model.UserName, true);

第二个参数将cookie设置为您的请求,并使"记住我"选项成为可能。

我从你的问题中了解到,php文件是服务器,而对于客户端,你使用的是windows表单。你正在进行某种HTML报废,并在获胜表单中显示结果HTML。如果这就是你正在做的事情,那么

//1. Create a dictionary to store cookie collection
    public static Dictionary<string, Cookie> CookieCollection { get; set; }
//2. Store cookie in that collection

foreach (Cookie clientcookie in response.Cookies)
     {
                    if (!CookieCollection.ContainsKey("AuthCookieName"))
                        CookieCollection .Add(userName, clientcookie);
                    else
                        CookieCollection ["userName"] = clientcookie;
    }
//3. If remember me is clicked then send the same while creating request
    request.CookieContainer.Add(request.RequestUri, 
new Cookie("AuthCookieName", CookieCollection ["userName"]));

其中AuthCookieName是身份验证cookie的名称。唯一的缺点是,当应用程序存在时,字典中存储的所有cookie都将消失。如果选中了"记住我",解决方案可以是序列化cookie并将其存储在数据库中。

最新更新