Как мне проверить имя пользователя и пароль с теми, что есть в базе данных, а затем перенаправить их с ajax, если они есть?
- Привет! Итак, у меня есть форма входа в систему с пользователем, пропуском и кнопкой для входа. На эту кнопку Я хочу поставить прослушиватель JavaScript и при нажатии запустить функцию$. ajax (), которая отправляет
запрос на страницу входа в систему, а затем возврат ответа json с 2 полями: error(failed) и msg (user/pass ok). Когда ajax заканчивается, функция success должна отобразить на странице значение из msg и, если нет ошибки, перенаправить на домашнюю страницу.
я предполагаю, что каким-то образом мне нужно проверить пользователя/пропуск с тем, что у меня есть в базе данных, я просто не знаю, как это сделать.
в настоящее время я использую сеансы для своей аутентификации, и это работает просто отлично, но теперь моя новая задача-изменить его.
я попробовал что-то ниже проблема в том, что я не знаю, как сделать проверку с базой данных, чтобы увидеть, если пользователь и пароль верны.
пожалуйста, помогите мне с некоторыми идеями.
Спасибо
Что я уже пробовал:
This is my table <table style="background-color:#f1f1f1"> <tr> <td><asp:Label runat="server" ID="lbl1" Font-Bold="true" ForeColor="Red"/></td> </tr> <tr> <td><asp:Label runat="server">Username</asp:Label></td> <td><asp:TextBox runat="server" ID="txtUser" placeholder="Username"/></td> <td><asp:RequiredFieldValidator ID="rfvUser" runat="server" ControlToValidate="txtUser" ErrorMessage="*" ForeColor="Red" Font-Bold="true" ValidationGroup="LoginInfo"/></td> </tr> <tr> <td><asp:Label runat="server">Password</asp:Label></td> <td><asp:TextBox runat="server" ID="txtPass" TextMode="Password" placeholder="Password"/></td> <td><asp:RequiredFieldValidator ID="rfvPass" runat="server" ControlToValidate="txtPass" ErrorMessage="*" ForeColor="Red" Font-Bold="true" ValidationGroup="LoginInfo"/></td> </tr> <tr > <td></td> <td><asp:Button runat="server" Text="Login" ID="btnLogin" CssClass="button" Width="210" OnClick="btnLogin_Click" ValidationGroup="LoginInfo"/></td> </tr> </table>
Вот то, что я пытался :
<script> $(document).ready(function myfunction () { $('#btnLogin').click(function () { var user = $('#txtUser').val(); var pass = $('#txtPass').val(); if (user != '' && pass != '') { $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url: "Login.aspx/InsertData", data: {user: txtUser, pass: txtPass}, dataType: "json", success: function (data) { var obj = data.d; if (obj == 'true') { $('#txtUser').val(''); $('#txtPass').val(''); $('#lbl1').html("Login Successfully"); // window.location = "Default.aspx";?? } }, error: function (result) { $('#lbl1').html("Wrong username or password"); } }); } else { $('#lbl1').html("Please fill all fields"); return false; } }); }); </script>
а в моем aspx. cs, может быть, что-то вроде :
[WebMethod] public static string InsertData(string user, string pass) { string msg = string.Empty; using (MySqlConnection conn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString)) { using (MySqlCommand cmd = new MySqlCommand("select * from useri where Username=@Username and Password=@Password", conn)) { conn.Open(); cmd.Parameters.AddWithValue("@Username", user); cmd.Parameters.AddWithValue("@Password", pass); int i = cmd.ExecuteNonQuery(); conn.Close(); if(i==1) { msg = "true"; } else { msg = "false"; } } } return msg; }
[no name]
Если вы не знаете, как, откуда взялся этот небезопасный код?
"помогите мне с некоторыми идеями", идеями для чего? Вы не задали вопрос и не описали проблему. Проведите небольшое исследование о том, как безопасно хранить пароли в базе данных.
Member 12869977
Код был взят из многих учебников, которые я смотрел и до сих пор смотрю об ajax jquery и о том, как отправлять json, потому что, очевидно, я только начал учиться. Пароли защищены в моем исходном коде, они зашифрованы. Это всего лишь пример, который я пытался в конечном итоге выполнить. И мне нужны были некоторые идеи о том, как сделать этот рабочий код. В настоящее время не работает. Извините, если я не ясно выразился, что мне нужно
F-ES Sitecore
Что не так с кодом, который у вас есть?
В стороне использование ajax для этого бессмысленно, просто используйте обычную форму. Ajax предназначен для уменьшения веб-трафика и улучшения пользовательского опыта, но если я перейду на другую страницу после входа в систему, то какое преимущество я получил от ajax, кроме того, что теперь мне нужно включить js для входа?
Edit: посмотрев на sql-код ExecuteNonQuery, вы можете не беспокоиться о результате, поэтому обновление, вставка или удаление. Вы хотите знать, сколько записей возвращается, чтобы вы могли изменить sql на
выберите пункт count (*) from ...
затем используйте ExecuteScalar вместо ExecuteNonQuery (google для синтаксиса о том, как использовать, вам нужно будет привести результат), или оставьте sql как есть и используйте ExecuteReader и сделайте что-то вроде
var dr = cmd.Метода executereader();
если (dr. Read())
{
// вход успешный
}
Member 12869977
Ну, текущий код не работает, потому что сообщение никогда не возвращает true, и оно не входит в систему, и я знаю, что делаю что-то не так, вот почему я написал здесь. Я довольно новичок в jQuery ajax и не знаю, в чем преимущество, но это та задача, которую мне дали, так что ... я изменю sql спасибо за ваше предложение