2014-09-16 2 views
0

Я пытаюсь создать функцию входа в ASP.NET с использованием базы данных MySQL и корпоративной библиотеки.Ошибка входа в ASP.NET с использованием MySQL

Сначала я создаю базу данных и сохраняю процедуры.

spselectusertype зр

DELIMITER // 


Create procedure spselectusertype(
     UName varchar(50), 
     Pasword varchar(50) 
    ) 
    BEGIN 
Select UserType_ID FROM login 
WHERE UName = UName AND UPasword = Pasword; 
    end; 

splogin зр

create procedure splogin() 
BEGIN 
     SELECT * 
     FROM login 
     WHERE UName = UName and UPasword=UPasword; 
    END 

Затем я создаю библиотеку классов и добавить эти функции:

Database db = DatabaseFactory.CreateDatabase("abc"); 

    public int UserType(string UName, string UPasword) 
    { 
     return Convert.ToInt32(db.ExecuteScalar("spselectusertype", new object[] { 
     UName, UPasword }).ToString()); 
    } 
    public int SignInUsers(string UName, string Pasword) 
    { 
     return Convert.ToInt32(db.ExecuteScalar("splogin", new object[] { UName, Pasword })); 
    } 

Логин код кнопки:

 MySqlConnection conn = new 
     MySqlConnection(ConfigurationManager.ConnectionStrings["abc"].ConnectionString); 

    ClassLibrary1.Class1 LOGIN = new ClassLibrary1.Class1(); 




    protected void Button1_Click1(object sender, EventArgs e) 
    { 

      //UsertpeTID sve in session 
      int users = LOGIN.UserType(TextBox1.Text, TextBox2.Text); 



      //UserID Save in Session 
      int user_id = Convert.ToInt16(LOGIN.SignInUsers(TextBox1.Text, TextBox2.Text)); 
      Session["UserID"] = user_id; 

      if (Session["UserID"] != null) 
      { 
       user_id = Convert.ToInt32(Session["UserID"].ToString()); 
      } 
      if (users == 1) 
      { 
       Session["Login2"] = TextBox1.Text; 
       Session["Login3"] = TextBox2.Text; 

       Session["UserTypeID"] = users; 

       Response.Redirect("alldocuments.aspx"); 
      } 
      else if (users == 2) 
      { 


       Session["Login2"] = TextBox1.Text; 
       Session["Login3"] = TextBox2.Text; 

       Session["UserTypeID"] = users; 

       Response.Redirect("Home.aspx"); 
       Label3.Visible = true; 
      Label3.Text = "Incorrect User Name or Password"; 
      } 
     } 

     } 

    } 

Но когда я отладки мой проект и введите имя пользователя и пароль, он показывает мне следующее сообщение об ошибке

Parameter discovery is not supported for connections using GenericDatabase. You must specify the parameters explicitly, or configure the connection to use a type deriving from Database that supports parameter discovery. 

на этой линии:

return Convert.ToInt32(db.ExecuteScalar("spselectusertype", new object[] { 
      UserName, UserPassword }).ToString()); 

Так где это ошибка?

ответ

0

Ошибка заключается в

Database db = DatabaseFactory.CreateDatabase("abc"); 

Поскольку Он только должен поддерживать SQLServers

Эталонные

Reference Link Пожалуйста, обратите внимание другие способы подключения к базе данных.

+0

Ссылка не работает. –

+0

@ Ryan McDonough, пожалуйста, попробуйте еще раз. Редактировать error Извините за это –

1

ПОЖАЛУЙСТА, если вы собираетесь создать веб-сайт ASP.NET с логином, НЕ ПРОПУСТИТЕ СВОЮ СОБСТВЕННУЮ СИСТЕМУ (если вы не знаете, что делаете).

Что я вижу из вашей системы, у вас практически нет какой-либо безопасности, включая управление ролями, управление доступом к папкам, хеширование пароля и сбрасывание пароля. Если вы используете систему членства ASP.NET (просто запустите новое приложение веб-форм asp.net с помощью Visual Studio), вы получите все это, а также простой способ управлять всем этим через локальный веб-портал, в том числе возможность выбрать свой собственный тип базы данных через инструмент настройки сети.

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

Я понимаю, что это не отвечает на ваш вопрос напрямую, но я все еще чувствую, что я должен это предложить.

+1

+1 - Это касается не только систем входа в систему в целом, но и шифрования, хэширования и т. Д. Если есть готовая библиотека там, попытка изобретать велосипед, вообще говоря, ужасная идея. Также похоже, что пароли передаются как обычный текст, и никаких реальных защит за пределами того, что предоставляет инфраструктура .net в отношении SQL-инъекции. – user2366842

Смежные вопросы