Primo Chalice Ответов: 2

Как создать сеанс входа в систему в C#?


Привет,

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

У меня есть созданная форма входа, которая извлекает свои данные из SQL Server, но теперь я хочу соединить эти две формы и создать сеанс. Поэтому после входа в систему он должен показать "Добро пожаловать *имя пользователя*"

Пожалуйста помочь.

Что я уже пробовал:

Я не знаю, как создать сеанс в C# WinForms.

2 Ответов

Рейтинг:
2

Wendelius

Если я правильно понимаю вопрос, один простой способ-использовать статический класс для хранения информации о приложении в целом. Например

public static class MyAppData {
   public bool LoggedIn { get; set; }
   public string UserName { get; set; }
}

Вы можете получить доступ к данным просто используя например
if (!MyAppData.LoggedIn) {
   ...
}
...
MessageBox.Show("$"Welcome {MyAppData.UserName}");


Primo Chalice

Да, только что-то вроде этого. Так что же мне делать дальше?

Wendelius

Не уверен, что понял ваш вопрос. Создайте статический класс и сохраните необходимую информацию в свойствах класса, которые вы определяете в этом классе.

Primo Chalice

Хорошо. Я попробую. Но я думаю, вы поняли. Я объясню вкратце.

Скажем, у меня есть форма входа в систему, и я вхожу в систему с пользователем "X". Как только вход в систему будет успешным, появится окно сообщений с надписью "Hello X". Форма входа закроется, и откроется основная форма. (Я сделал это без сообщения). После загрузки основной формы я выполню условие if Username==X, а затем сохраню все данные в таблице в SQL.

Таким образом, каждый пользователь будет иметь отдельную таблицу для своей сохраненной работы и прогресса.

Я создал таблицы.

Wendelius

Итак, после успешного входа в систему сохраните имя пользователя в статическом классе и при необходимости в другой форме извлеките его оттуда. Обратите внимание, что статический класс не виден никаким другим приложением, поэтому в этом смысле он отличается от переменных сеанса в ASP.Net

Что касается таблиц, то иметь отдельные таблицы для разных пользователей звучит как плохая идея. Это обычная практика-делиться таблицей между пользователями, поэтому я рекомендую пересмотреть этот подход.

Рейтинг:
1

OriginalGriff

В WinForms нет такого понятия, как "сеанс": это конструкция, которая необходима на веб-сайтах, потому что у вас может быть несколько пользователей, вошедших в систему одновременно, и одно приложение (IIS) заботится о них всех. Каждый пользователь получает сеанс, так что его данные могут храниться отдельно от всех остальных, без необходимости накладных расходов полного экземпляра приложения, работающего для каждого отдельного пользователя.

С Winforms все по-другому: обычно на машине есть только один пользователь, и приложение работает только для этого одного пользователя: если вам нужно два пользователя на одной машине одновременно, вы запускаете второй экземпляр приложения. Вам не нужен "сеанс", потому что в приложении нет другого пользователя, с которым можно было бы что-то перепутать!

Итак, ваш процесс таков:

Запустите приложение.
Откройте форму входа в систему.
Проверьте пользователя.
Скрыть или закрыть форму входа, открыть основную форму, передать сведения о пользователе в основную форму.
Затем основная форма сохраняет информацию о пользователе как часть своего экземпляра формы и отображает ваше сообщение "Добро пожаловать".