Форум программистов
Реклама:
Гарантия безопасности сети с UTM-системой ИКС.
Защита ПД, межсетевой экран, контроль доступа, фильтрация трафика, система предотвращения вторжений.
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

Восстановить пароль
Повторная активизация e-mail

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

Всем привет, пишу приложение в котором есть форма ввода пользователя в виде всплывающего окна(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, 16:38   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 13,734
Репутация: 2701

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

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

И не храните пароли в БД, храните хеши.
Alex11223 вне форума   Ответить с цитированием
Старый 20.01.2016, 16:58   #3
D87
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 13
Репутация: 10
По умолчанию

Хеши, буду делать позже. В консоли сервера и браузера ошибок никаких нет, код отрабатывает нормально(в дебаге). Доходит до места перенаправления
Код:

req.getRequestDispatcher("userCabinet.jsp").forward(req, resp);

и как-бы переходит в личный кабинет, но в итоге в браузере перехода нет, остается висеть popup. Конкретно не срабатывает переход из popup в личный кабинет. Я понимаю что в ajax перегружается только та часть которая собственно передается на сервер, но ведь далее в сервере явно прописано куда надо переходить при положительной валидации.
D87 вне форума   Ответить с цитированием
Старый 20.01.2016, 17:15   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 13,734
Репутация: 2701

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

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

Можно сделать чтобы сервер возвращал результат проверки (успешна ли) и в JS делать переход на нужную страницу (window.location).
Ну или как вариант сделать что-то типа
Код:

$("body").html(errorEnter);

Alex11223 вне форума   Ответить с цитированием
Старый 20.01.2016, 17:23   #5
D87
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 13
Репутация: 10
По умолчанию

Если делать перенаправление с js, тогда нужно с сервера вернуть map, для этого JSON использовать?
D87 вне форума   Ответить с цитированием
Старый 20.01.2016, 17:26   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 13,734
Репутация: 2701

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

А что в map? После авторизации нельзя что ли просто перейти на эту страницу? (userCabinet.jsp)
Alex11223 вне форума   Ответить с цитированием
Старый 20.01.2016, 17:37   #7
D87
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 13
Репутация: 10
По умолчанию

в map данные пользователя(сокращенные ссылки). Т.е. при загрузке его кабинета отображаются его ссылки, которые выбирались после положительной валидации и передовались в
Код:

 req.setAttribute("spisok", map);

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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




07:45.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru