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

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

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

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

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

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

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

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

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

типа так
...
Рейтинг: 0 / 0
Spring rest api redirect if session timeout
    #39124936
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Spring rest api redirect if session timeout
    #39124940
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
am_sasaAtum1,

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

типа так

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

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

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

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


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


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

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

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

В том, то и дело, что скорее всего статус будет 200, отличатся будут заголовки.
...
Рейтинг: 0 / 0
Spring rest api redirect if session timeout
    #39124961
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
am_sasa1. в header ajax запроса сую инфу про ajax
AFAIK в хидере запроса автоматом инфа есть. Нужно на приёмнике-сервере проверить заголовок.
...
Рейтинг: 0 / 0
Spring rest api redirect if session timeout
    #39124962
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,
ну да. +1
Всё у него в руках на стороне сервера. Может и продлить сессию, и знает кто и зачем вызвал.
...
Рейтинг: 0 / 0
Spring rest api redirect if session timeout
    #39124966
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Spring rest api redirect if session timeout
    #39124973
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с другой стороны, нафига весь этот код геморрой.
Сеесия должна автоматом продляться после любого вызова. Так?
Значит надо при любом вызове по ajax её продлить парой строк на сервере. Раз сервер не видит эти вызовы.
Всё.
...
Рейтинг: 0 / 0
Spring rest api redirect if session timeout
    #39124977
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
am_sasa,
тогда п.п. не нужен (уже есть метка ajax), а п.п. 2-3 зачем кого то заставлять заново авторизоваться?
...
Рейтинг: 0 / 0
Spring rest api redirect if session timeout
    #39124979
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Сеесия должна автоматом продляться после любого вызова. Так?

timeout сессии он не на ровном месте появился. Иначе на сервере список сессий будет только расти и его можно вообще одной левой зафлудить этими сессиями.
С другой стороны какой-нибудь heartbeat с клиента - вполне здравая мысль.
...
Рейтинг: 0 / 0
Spring rest api redirect if session timeout
    #39124984
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Spring rest api redirect if session timeout
    #39124991
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczИначе на сервере список сессий будет только расти
Запрос по JSP продляет сессию?
Если точно так продлить на запрос на сервлет (AJAX на сервлет?) то ничего расти не будет
...
Рейтинг: 0 / 0
Spring rest api redirect if session timeout
    #39125008
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
единственно реализация привязана к контейнеру.
На sql_ru кука сессионная похоже ASP.NET_SessionId=hnf1c2lqzogwohwet5uuazbg; path=/; domain=.www.sql.ru; HttpOnly
на томкате другое имя - Globals.SESSION_COOKIE_NAME
и т.д.
))
...
Рейтинг: 0 / 0
Spring rest api redirect if session timeout
    #39125013
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczPetro123Сеесия должна автоматом продляться после любого вызова. Так?

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

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


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




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

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


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