Как сохранить пользователя в системе, даже если приложение закрыто SQL C# - PullRequest
0 голосов
/ 07 мая 2020

У меня есть проект приложения Windows, в который пользователи могут входить со своим идентификатором пользователя и паролями. Для этого я использую SQL. Я хочу сделать так, чтобы когда пользователь входит в систему и выходит из приложения, приложение запрашивает данные для входа только в том случае, если он вышел из системы. Если он закрывает приложение, не выходя из системы, окно входа в систему не отображается. Как этого добиться?

Ответы [ 2 ]

0 голосов
/ 11 мая 2020

По моему мнению, просто добавить параметр не получится.

Если идентификаторы пользователей и пароли хранятся в SQL DataTable, вы можете добавить еще один столбец типа bool и обновить этот столбец.

Например, у вас есть пользователь с именем AB C. Когда он входит в систему, для идентификатора пользователя AB C в SQL DataTable устанавливается значение true. Каждый раз, когда загружается приложение или отображается форма, проверяется, вошел ли AB C в систему или нет (помните, что у нас есть столбец типа bool для проверки), и если это правда, окно входа в систему никогда не отображается.

Это может быть более простое, выполнимое и безопасное решение.

EDIT:

Воспользуйтесь ссылкой ниже, чтобы просмотреть руководство по добавлению столбцов в SQL datatable.

https://www.youtube.com/watch?v=NX8-LhgFnUU

Но вместо добавления 3 столбцов, как показано в видео, добавьте 4 столбца и назовите 4-й столбец как «Зарегистрированный» и установите его введите bool.

Кроме того, пожалуйста, отредактируйте код, показанный в видео, как показано ниже (вы также можете скопировать и вставить его)

    SqlConnection sqlConnection1 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Do Not Delete\LoginApp\DB\LoginDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
    SqlCommand cmd = new SqlCommand();
    SqlDataReader reader;
    
    cmd.CommandText = "SELECT * FROM Logged";
    cmd.CommandType = CommandType.Text;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    reader = cmd.ExecuteReader();
    // Data is accessible through the DataReader object here.
    
    DataTable dt = new DataTable();
    dt.Load(reader);
    
    sqlConnection1.Close();

    DataRow drow = dt.Rows[0];
    bool value = drow.Field<bool>("Logged");

if(value == false)
{
   SqlConnection sqlcon = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Do Not Delete\LoginApp\DB\LoginDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
            string query = "Select * from tbl_Login Where username = '" + txtUsername.Text.Trim() + "' and password = '" + txtPassword.Text.Trim() + "'";
            SqlDataAdapter sda = new SqlDataAdapter(query, sqlcon);
            DataTable dtbl = new DataTable();
            sda.Fill(dtbl);
            if (dtbl.Rows.Count == 1)
            {
                dtbl.Rows[0].Cells[3].Value = true;
                sda.Update(dtPrimary);
                sqlcon.Close();
                frmMain objFrmMain = new frmMain();
                this.Hide();
                objFrmMain.Show();
            }
            else
            {
                MessageBox.Show("Check your username and password");
            }
}
else
{
                frmMain objFrmMain = new frmMain();
                this.Hide();
                objFrmMain.Show();
}

        
0 голосов
/ 07 мая 2020

Один из способов go об этом - сохранить токен сеанса как переменную настроек приложения , которую можно проверить во время выполнения. Как вы будете go генерировать его, будет зависеть от области применения приложения (аутентификация на стороне сервера или локальная проверка).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...