Хранение информации "запомнить меня" локально c # (всего новичок) - PullRequest
2 голосов
/ 09 января 2012

Я начал программировать на c # несколько дней назад, поэтому я совершенно новичок в этом.Основываясь на своем опыте работы с другими языками, я нашел это несколько «простым».

Я строю систему, в которой пользователи входят в мое приложение, которое работает.Я хочу, чтобы «помни меня» - установка, где информация хранится локально.Каков наилучший способ сделать это?Я сохраню только имя пользователя и пароль-хэш.

Редактировать: Это настольное приложение.Информация для входа отправляется в php-скрипт просто с помощью HttpWebRequest

Ответы [ 4 ]

4 голосов
/ 09 января 2012

Вы можете использовать ConfigurationManager Class для управления настройками вашего приложения.

вы можете использовать эту функцию для добавления новых ключей в ваш файл конфигурации:

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"];
0 голосов
/ 09 января 2012

Что я понимаю из вашего вопроса, php файл является сервером, а для клиента вы используете форму Windows. Вы делаете какую-то проверку HTML и отображаете HTML-результат в своей win-форме. Если это то, что вы делаете, то

//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, хранящиеся в словаре, исчезнут. Решением может быть сериализация куки-файла и его сохранение в базе данных, если помните, что установлен флажок.

0 голосов
/ 09 января 2012

вы можете создать настройки приложения в C #

вот что вы будете делать.

не забудьте зашифровать его.

0 голосов
/ 09 января 2012

Если вы используете ASP .NET, вы можете установить куки аутентификации, когда вы вошли в систему пользователем по второму параметру

FormsAuthentication.SetAuthCookie(model.UserName, true);

Второй параметр устанавливает куки по вашему запросу и делает опцию «Запомни меня».

...