Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2016, 14:52   #1
D87
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 13
По умолчанию Валидация логин/пароль

Всем привет, пишу приложение в котором есть форма ввода пользователя в виде всплывающего окна(popup). Принцип работы такой: ввожу логин/пароль в popup, далее через js-ajax передаю данные в servlet где порверяю эти данные сравниваю их с имеющимися в БД. Далее если все успешно перехожу из servlet в личный кабинет(jsp), если нет возвращаю сообщение об ошибке в popup. Проблема в том что при правильной валидации не происходит переход из servlet в jsp. И еще данные в servlet приходят нормально, но ислользуя post в ajax почему-то передаются вместе с url.
JS-AJAX
Код:
$(document).ready(function(){
        $('#buttEnter').bind("click",function(){
            $.ajax({
                url:"http://localhost:81/UserAvtoriz",
                type: "post",
                data:({login: $('#loginE').val(), password:$('#passwordE').val()}),
                dataType:"html",
                success: function (errorEnter){
                  if(errorEnter === 'true'){
                        document.getElementById('erPasswordE').innerHTML = 'Nevernyi login/parol!!!';
                        document.getElementById('erPasswordE').style.display = 'block';
                    }
                }
            });
        });
    });
SERVLET
Код:
......
  ps = connect.getConnection().prepareStatement("SELECT id_users,login,password FROM users WHERE login=? AND password=?");
                ps.setString(1, login);
                ps.setString(2, password);
                rs = ps.executeQuery();
                                /*proverka login parol*/
                if (!rs.next()) {
                    System.out.println("Неверный логин-пароль!!");
                    PrintWriter out = resp.getWriter();
                    out.print("true");
                } else {
                    System.out.println("Вошли успешно!");
                    rs = ps.executeQuery();
                    while (rs.next()) {
                        idU = rs.getInt(1);
                        login = rs.getString(2);
                        password = rs.getString(3);
                    }
                    String id = String.valueOf(idU);
                    req.setAttribute("id", id);
                    map = new UserData().vuborkaPersonData(req,resp);
 
                    HttpSession session = req.getSession(true);                           
                    session.setAttribute("login", login);
                    session.setAttribute("password", password);
                    req.setAttribute("spisok", map);
                    req.setAttribute("idU", id);
                    req.getRequestDispatcher("userCabinet.jsp").forward(req, resp);
}
......
D87 вне форума Ответить с цитированием
Старый 20.01.2016, 15:38   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что именно не происходит?
Что в консоли сервера и консоли JS браузера?

И не храните пароли в БД, храните хеши.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.01.2016, 15:58   #3
D87
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 13
По умолчанию

Хеши, буду делать позже. В консоли сервера и браузера ошибок никаких нет, код отрабатывает нормально(в дебаге). Доходит до места перенаправления
Код:
req.getRequestDispatcher("userCabinet.jsp").forward(req, resp);
и как-бы переходит в личный кабинет, но в итоге в браузере перехода нет, остается висеть popup. Конкретно не срабатывает переход из popup в личный кабинет. Я понимаю что в ajax перегружается только та часть которая собственно передается на сервер, но ведь далее в сервере явно прописано куда надо переходить при положительной валидации.
D87 вне форума Ответить с цитированием
Старый 20.01.2016, 16:15   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так вы ajax запрос перенаправили. В errorEnter в этом случае у вас HTML новой страницы.

Можно сделать чтобы сервер возвращал результат проверки (успешна ли) и в JS делать переход на нужную страницу (window.location).
Ну или как вариант сделать что-то типа
Код:
$("body").html(errorEnter);
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.01.2016, 16:23   #5
D87
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 13
По умолчанию

Если делать перенаправление с js, тогда нужно с сервера вернуть map, для этого JSON использовать?
D87 вне форума Ответить с цитированием
Старый 20.01.2016, 16:26   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А что в map? После авторизации нельзя что ли просто перейти на эту страницу? (userCabinet.jsp)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.01.2016, 16:37   #7
D87
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 13
По умолчанию

в map данные пользователя(сокращенные ссылки). Т.е. при загрузке его кабинета отображаются его ссылки, которые выбирались после положительной валидации и передовались в
Код:
 req.setAttribute("spisok", map);
. Хотя вы Alex подкинули идею). Ссылки выбрать можно и при загрузке страницы, собственно обратившись из нее к нужному методу, и тогда не надо будет их передовать request.
D87 вне форума Ответить с цитированием
Старый 28.01.2016, 21:08   #8
D87
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 13
По умолчанию

Вопрос решен, тему можно закрывать.
D87 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
логин и пароль CD_SVEN БД в Delphi 1 21.05.2014 04:17
Пароль Логин Mystery_Planet C# (си шарп) 2 08.05.2011 14:35
Логин и пароль serega112000 Помощь студентам 3 03.02.2010 16:22
логин и пароль All517 Работа с сетью в Delphi 3 15.01.2009 15:46