Squeak.ru - шаблоны программирования

перенаправить страницу на страницу входа по истечении времени ожидания сеанса в spring mvc без использования весенней безопасности

Это легко сделать с помощью Spring Security. Но что, если я не использую Spring Security и хочу перенаправить пользователя на страницу входа с сообщением «Сессия истекла» в Spring MVC.

Есть ли у Spring какой-либо конкретный метод для этого?


  • Определите, не вошел ли ваш пользователь в систему, и отправьте перенаправление. 21.04.2014

Ответы:


1

Да, вы можете сделать это, используя следующий фрагмент. Попробуйте включить эти строки в заголовок страницы. И замените атрибут пользователя в соответствии с объектом сеанса пользователя.

HttpSession session = request.getSession("User");
if(session != null && !session.isNew()) {
   //do something here
} else {
    response.sendRedirect("/redirect_the_page.jsp");
}
21.04.2014
  • Я получаю это, когда он переходит к response.sendRedirect-> java.lang.IllegalStateException: невозможно создать сеанс после того, как ответ был зафиксирован. Пожалуйста, предложите 21.04.2014
  • Обратитесь к этому: - stackoverflow.com/questions/4393160/ 21.04.2014
  • @SireeshYarlagadda первая строка не вызовет исключение нулевого указателя, если время сеанса истекло, а сеанс равен нулю 23.12.2014

  • 2

    Наконец решено.

    Я добавил фильтры в web.xml.

     <filter>
        <filter-name>SessionFilter</filter-name>
        <filter-class>
            com.java.util.SessionFilter
        </filter-class>
        <init-param>
            <param-name>avoid-urls</param-name>
            <param-value>/firstPage.htm</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>SessionFilter</filter-name>
        <url-pattern>*.htm</url-pattern>
    </filter-mapping>
    

    Затем создал класс фильтра

        import java.io.IOException;
        import java.util.ArrayList;
        import java.util.StringTokenizer;
        import javax.servlet.Filter;
        import javax.servlet.FilterChain;
        import javax.servlet.FilterConfig;
        import javax.servlet.ServletException;
        import javax.servlet.ServletRequest;
        import javax.servlet.ServletResponse;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import javax.servlet.http.HttpSession;
    
        public class SessionFilter implements Filter {
    
    private ArrayList<String> urlList;
    
    public void destroy() {
    }
    
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        String url = request.getServletPath();
        boolean allowedRequest = false;
        if (urlList.contains(url)) {
            allowedRequest = true;
        }
    
        if (!allowedRequest) {
            HttpSession session = request.getSession(false);
            if (null == session) {
                response.sendRedirect("startup.jsp");
            } else {
                chain.doFilter(request, response);
            }
        } else {
            chain.doFilter(request, response);
        }
    }
    
    public void init(FilterConfig config) throws ServletException {
        String urls = config.getInitParameter("avoid-urls");
        StringTokenizer token = new StringTokenizer(urls, ",");
        urlList = new ArrayList<String>();
        while (token.hasMoreTokens()) {
            urlList.add(token.nextToken());
    
        }
    }
    }
    

    Обратите внимание, что я выполнил эту строку «chain.doFilter (запрос, ответ);» только когда сессия активна. В противном случае будет выдано исключение "java.lang.IllegalStateException: невозможно переслать после того, как ответ был зафиксирован"

    21.04.2014
    Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...