Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring rest api redirect if session timeout / 25 сообщений из 66, страница 1 из 3
10.12.2015, 13:49
    #39124906
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Добрый день .

Есть страница , /index.jsp

с нее идут вызовы через jquery на rest api /

если пользовательская сессия протухла,и он не обновил страницу - то при попытке вызова rest api из jquery - хорошо бы его каким то образом выбросить на страницу login

если ли какой-то способ ?

Сейчас я могу это понять если буду анализировать http статсус отличный от 200 ?!

можно как то сделать это централизовано и единообразно?
...
Рейтинг: 0 / 0
10.12.2015, 13:52
    #39124909
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1через jquery на rest api /
не понял.... в сервлет вызовы?
...
Рейтинг: 0 / 0
10.12.2015, 13:56
    #39124913
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1,
кука сессии с именем JSESSIONID.
Выведи лог конкретный что и как там у тебя с этой кукой из сервлета\фильтра\Valve
...
Рейтинг: 0 / 0
10.12.2015, 13:58
    #39124918
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1,

Это собственно к JavaScript части вопрос. Там (jQuery) можно на ajax глобальный хэндлер навесить, в котором уже реагировать на определенные статус коды или заголовки.
...
Рейтинг: 0 / 0
10.12.2015, 14:09
    #39124934
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1,

я делаю так
1. в header ajax запроса сую инфу про ajax
2. в фильтре проверяю header:
- если нет инфы про ajax, то редерект на index.jsp
- если есть, то ответ с кодом 'про тухлую сессию'
3. если в аjax 'про тухлую сессию', то диалоговое окно 'про тухлую сессию' и
по кнопке 'OK' document.location=/index.jsp

типа так
...
Рейтинг: 0 / 0
10.12.2015, 14:09
    #39124936
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
BlazkowiczAtum1,

Это собственно к JavaScript части вопрос. Там (jQuery) можно на ajax глобальный хэндлер навесить, в котором уже реагировать на определенные статус коды или заголовки.

ну либо решение не совсем через jquery - а через meta http-equiv="refresh"

Код: html
1.
2.
3.
4.
5.
6.
<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <%--автообновление страницы после 30 минут бездействия - редирект на страницу login --%>
        <meta http-equiv="refresh" content="108000" />



просто сейчас такая картинка - если сессия протухла а мы на странице то при запросе ( нажатие к примеру на ноду дерева - )
мы через js - делаем вызов rest api - а в ответ нам прилетает redirect 302 на страницу login и след запросам сама страницу логин в обработчик js - а сама страница остается как есть ...


Да можно делать через js - но не хочется в каждом вызове вставлять проверку ...


Хотя наверное средствами сервера по таймауту обновить клиента (выбросить его на страницу логина нельзя ....)
...
Рейтинг: 0 / 0
10.12.2015, 14:10
    #39124940
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
am_sasaAtum1,

я делаю так
1. в header ajax запроса сую инфу про ajax
2. в фильтре проверяю header:
- если нет инфы про ajax, то редерект на index.jsp
- если есть, то ответ с кодом 'про тухлую сессию'
3. если в аjax 'про тухлую сессию', то диалоговое окно 'про тухлую сессию' и
по кнопке 'OK' document.location=/index.jsp

типа так

можно пример кода ?
...
Рейтинг: 0 / 0
10.12.2015, 14:16
    #39124949
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1Да можно делать через js - но не хочется в каждом вызове вставлять проверку ...
В jQuery есть глобальные хуки, чтобы не вешать на каждый вызов. Я же написал это выше.
...
Рейтинг: 0 / 0
10.12.2015, 14:21
    #39124956
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1Добрый день .

Есть страница , /index.jsp

с нее идут вызовы через jquery на rest api /

если пользовательская сессия протухла,и он не обновил страницу - то при попытке вызова rest api из jquery - хорошо бы его каким то образом выбросить на страницу login


По идее если сессия "протухла", то автоматом идет редирект на страницу входа...
Проблема в том, что вам самим надо "обработать" редирект, если работаете ч/з Ajax.
Т.е. на callback'е обработчика проверяйте заголовок.
Если, например, text/json, то это данные, если что-то другое, то парсите как html страницу и дальше по ситуации.


Atum1 если ли какой-то способ ?

Сейчас я могу это понять если буду анализировать http статсус отличный от 200 ?!

можно как то сделать это централизовано и единообразно?

В том, то и дело, что скорее всего статус будет 200, отличатся будут заголовки.
...
Рейтинг: 0 / 0
10.12.2015, 14:22
    #39124961
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
am_sasa1. в header ajax запроса сую инфу про ajax
AFAIK в хидере запроса автоматом инфа есть. Нужно на приёмнике-сервере проверить заголовок.
...
Рейтинг: 0 / 0
10.12.2015, 14:24
    #39124962
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
mad_nazgul,
ну да. +1
Всё у него в руках на стороне сервера. Может и продлить сессию, и знает кто и зачем вызвал.
...
Рейтинг: 0 / 0
10.12.2015, 14:27
    #39124966
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1,
собрал по крохам
1.
Код: javascript
1.
2.
3.
webix.attachEvent("onBeforeAjax", function(mode,url,data,request,headers){
	headers['X-Requested-With']='XMLHttpRequest'
})

это не jquery
2.
Код: java
1.
2.
String ajaxHeader =request.getHeader("X-Requested-With");
if(ajaxHeader.equals("XMLHttpRequest"))response.setStatus(HttpServletResponse.SC_FORBIDDEN);

это выжимка
3.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
webix.attachEvent("onAjaxError", function(xhr){
	webix.alert({
		type :'alert-error', width:360,height:180,
		title: 'Время сессии истекло',
		ok	 :'Авторизоваться',
		text :'Необходимо заново авторизоваться',
		callback:function(){location.reload(true)}
	})
})

это не jquery
...
Рейтинг: 0 / 0
10.12.2015, 14:39
    #39124973
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
с другой стороны, нафига весь этот код геморрой.
Сеесия должна автоматом продляться после любого вызова. Так?
Значит надо при любом вызове по ajax её продлить парой строк на сервере. Раз сервер не видит эти вызовы.
Всё.
...
Рейтинг: 0 / 0
10.12.2015, 14:41
    #39124977
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
am_sasa,
тогда п.п. не нужен (уже есть метка ajax), а п.п. 2-3 зачем кого то заставлять заново авторизоваться?
...
Рейтинг: 0 / 0
10.12.2015, 14:42
    #39124979
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Petro123Сеесия должна автоматом продляться после любого вызова. Так?

timeout сессии он не на ровном месте появился. Иначе на сервере список сессий будет только расти и его можно вообще одной левой зафлудить этими сессиями.
С другой стороны какой-нибудь heartbeat с клиента - вполне здравая мысль.
...
Рейтинг: 0 / 0
10.12.2015, 14:47
    #39124984
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Blazkowicz,
так в томкате получаем эту куку
Код: java
1.
2.
3.
4.
5.
6.
7.
Cookie getJsessionCookie(Cookie[] cc) {
    for (int i = 0; cc != null && i < cc.length; i++) {
      if(Globals.SESSION_COOKIE_NAME.equals(cc[i].getName()))
        return cc[i];
    }
    return null;
  }


2.
В этом же запросе видим AJAX
3. Тут же есть объект сессии
....
IMHO
нет тут никакого волшебства.
Что я кодом выше буду продлять, что сам ещё раньше.
...
Рейтинг: 0 / 0
10.12.2015, 14:52
    #39124991
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
BlazkowiczИначе на сервере список сессий будет только расти
Запрос по JSP продляет сессию?
Если точно так продлить на запрос на сервлет (AJAX на сервлет?) то ничего расти не будет
...
Рейтинг: 0 / 0
10.12.2015, 14:59
    #39125008
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
единственно реализация привязана к контейнеру.
На sql_ru кука сессионная похоже ASP.NET_SessionId=hnf1c2lqzogwohwet5uuazbg; path=/; domain=.www.sql.ru; HttpOnly
на томкате другое имя - Globals.SESSION_COOKIE_NAME
и т.д.
))
...
Рейтинг: 0 / 0
10.12.2015, 15:03
    #39125013
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
BlazkowiczPetro123Сеесия должна автоматом продляться после любого вызова. Так?

timeout сессии он не на ровном месте появился. Иначе на сервере список сессий будет только расти и его можно вообще одной левой зафлудить этими сессиями.
С другой стороны какой-нибудь heartbeat с клиента - вполне здравая мысль.

ну как вариант - пулинг с клиента раз в 15 минут - дернуть что то по ajax ? чтобы сессия продлилась .
...
Рейтинг: 0 / 0
10.12.2015, 15:30
    #39125058
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1,
в чём вопрос тогда?
- если просто перебросить, то при поступлении запроса, то:
1. Проверить сессию
2. если закончена, то дать ответ и клиент направит.
или
Код: java
1.
response.sendRedirect(URL_);


----------
Если надо продлять, то другой вопрос.
...
Рейтинг: 0 / 0
10.12.2015, 15:32
    #39125060
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1дернуть что то по ajax ? чтобы сессия продлилась
ответь на вопрос.
- дергать F5 у JSP сессия продляется?
- дергать сервлет по AJAX сессия продляется?
...
Рейтинг: 0 / 0
10.12.2015, 15:42
    #39125077
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Petro123
Код: java
1.
response.sendRedirect(URL_);




Это нужно делать в HttpSessionListener ?

когда сессия закочилась делать что то ? но если у нас api rest - то это только js на клиенте.
...
Рейтинг: 0 / 0
10.12.2015, 16:00
    #39125101
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1когда сессия закочилась делать что то ? но если у нас api rest - то это только js на клиенте
я вторым посто спросил - что такое у тебя api rest.
Я на своём сайте вызываю по AJAX сервлет
если только JS значит томкат и БД не вызываем?
...
Рейтинг: 0 / 0
10.12.2015, 16:02
    #39125102
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1когда сессия закочилась делать
ответь на вопрос как она у тебя заканчивается )))) LOL
...
Рейтинг: 0 / 0
10.12.2015, 16:04
    #39125105
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring rest api redirect if session timeout
Atum1Это нужно делать в HttpSessionListener ?
в моём проектпо SSO при запросе GET странички JSP с защитой, я это делаю в фильтре (перед JSP).
Но можно делать где угодно с
Код: java
1.
(HttpServletRequest request, HttpServletResponse response)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring rest api redirect if session timeout / 25 сообщений из 66, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]