C # извлекает имя пользователя и пароль из таблицы данных - PullRequest
0 голосов
/ 14 декабря 2011

Я новичок в C #.Я использую VS2010 и LINQ.Вот моя проблема .. У меня есть страница входа, с 2 текстовыми полями и кнопкой подтверждения.Когда кнопка нажата, приложение должно проверить имя пользователя и пароль из таблицы упорабники и, если оно правильно, затем перенаправить ..

Как я могу сохранить все имена пользователей и пароли в список, а затем просмотреть список и проверитьна матч?

protected void Button1_Click(object sender, EventArgs e) 
{
    WebApplication7.linqDataContext db = new WebApplication7.linqDataContext();

    var users = from usr in db.uporabnikis select usr.username;

    List<String> upo = new List<String>();
    upo = (List<String>) users;
}

Спасибо, Бени

Ответы [ 5 ]

3 голосов
/ 14 декабря 2011

Вы должны просто добавить проверку к запросу, что-то вроде этого должно сделать:

   WebApplication7.linqDataContext db = new WebApplication7.linqDataContext();

   bool validLogin = (from usr in db.uporabnikis
                where usr.username == txtUserName.Text and 
                      usr.password == txtPassword.Text
                select true).SingleOrDefault();

   if(validLogin)
       // Do stuff

Я согласен с комментарием nonnb, приведенным выше, хотя вы должны хранить хеш, а не текстовый пароль.

1 голос
/ 14 декабря 2011

Попробуйте это

    protected void Button1_Click(object sender, EventArgs e)
    {
        WebApplication7.linqDataContext db = new WebApplication7.linqDataContext();

        var users = from usr in db.uporabnikis
                    select usr.username,usr.password;

        bool result = false;

        foreach(var user in users)
        {
            if(user.username.Equals("usernametocheck") && user.password.Equals("passwordtocheck"))
            {
                result = true;
                break;
            }
        }

        if(result)
        {
            //code to redirect
        }
        else
        {
            //Display error
        }

    }

Или Вы можете попробовать это

    protected void Button1_Click(object sender, EventArgs e)
    {
        WebApplication7.linqDataContext db = new WebApplication7.linqDataContext();

        int recordCount = 0;
        recordCount  = db.uporabnikis.where(x => x.username == "usernametocheck" && x.password = "passwordtocheck").Count();



        if (recordCount > 0)
        {
            //code to redirect
        }
        else
        {
            //Display error
        }

    }
1 голос
/ 14 декабря 2011
  1. Не храните пароли в базах данных, это опасно. Хранить хеш.
  2. Во-первых, не получать список, у вас уже есть база данных, и она знает, как найти отдельные строки.

Вы хотите что-то похожее на:

var userInfo = (from usr in db.uporabnikis where usr.username == Request.Form["username"] select {usr.username, usr.passwordHash, usr.salt).FirstOrDefault();

bool loggedIn = passwordHash == HashPassword(usr.username, usr.salt, Request.Form["password"]);

Etc ...

0 голосов
/ 14 декабря 2011

Вам действительно нужно хранить любые пароли, используя Hash.Например, MD5 и проверка на это.

using System.Security.Cryptography;

 using (MD5 hash = MD5.Create())
        {password = GetMd5Hash(hash,passwordString}
0 голосов
/ 14 декабря 2011

Переменная users реализует интерфейс с именем IEnumerable<T>, где T в вашем случае равно string.

Чтобы получить List<string> из IEnumerable<string>, самый простой способ - использовать метод расширения LINQ ToList(), поэтому:

List<String> upo =users.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...