2014-05-05 2 views
0

Я пишу очень простую систему авторизации. Я не хочу использовать Spring Security. Я хочу написать очень простой auth, основанный на сеансах, cookie и MySQL.Java Spring 3 - прочитайте cookie в приложении init

Теперь, запомните мне функциональность Я хочу, чтобы каждый раз, когда страница загружается, метод проверяет файлы cookie.

Я создаю init-bean, он работает. Но когда я пытаюсь читать cookie, это терпит неудачу.

Для печенья мне нужен HttpServletRequest. Так это то, что я делаю в Init-боба:

@Override 
public void afterPropertiesSet() throws Exception { 
    System.out.println("Init-Bean started"); 

    HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder 
      .getRequestAttributes()).getRequest(); 

    // Cookie cookies[] = request.getCookies(); 
    // 
    // for (Cookie c : cookies) { 
    // System.out.println(c.toString()); 
    // } 
} 

Я терпит неудачу на GetRequest

я получаю: Ошибка при создании боб с именем «AUTH»: Призвание метод инициализации не удалось; Вложенное исключение - java.lang.NullPointerException

Есть ли способ получить HttpServletRequest из init-bean? Есть ли другой способ?

То, что я хочу это: загрузка страницы, прочитать куки, если печенье существует -> проверить, если пользователь существует в БД -> начать сеанс

TNX.

P.S Я чувствую себя потерянным после перехода с PHP на весну (на PHP это просто глобальный массив, 1 строка кода). iN asp.net MVC Я сделал это в MvcApplication. Но в Java SPRING 3 Я не везет ...

+1

Это не имеет никакого смысла. Куки-файлы применяются к определенным HTTP-запросам; почему вы думаете, что cookie будет присутствовать при запуске? Кроме того, вам может быть лучше написать фильтр для Spring Security и позволить ему обрабатывать все управление сеансом. – chrylis

+0

Я ненавижу весну xmls и тонну ненужного кода ... Это должна быть очень простая задача. Куки-файлы и сеансы - очень простые вещи. Как я могу запросить «cathc», чтобы мне не нужно писать код в методе каждого контроллера? В ASP.NET я делал это в классе Application, я не могу найти что-то подобное весной ... –

+0

Для конфигурации Modern Spring не требуется XML для большинства настроек, и посмотрите на Spring Boot для упрощенного способа настройки среды выполнения. Я знаю, как настроить весь XML для Spring 'war', но Spring Boot делает его настолько легким, что я использую его для всех моих развертываний. – chrylis

ответ

1

я чувствую утрачена после mooving от PHP до весны (в PHP это просто глобальный массив, 1 строка кода)

Это предложение делает это вопрос делает намного больше смысла. В Java классы сервлетов создаются при запуске сервера, а не во время запроса, поэтому, когда вызывается afterPropertiesSet(), запрос еще не наступил (фактически, есть , нет способа, запрос мог бы прийти, поскольку сервер не запустился еще не достигнув соединений). Я предлагаю вам проверить это SO question. Принятый ответ отлично справляется с жизненным циклом компонентов и т. Д. В сущности, вам нужно будет пересмотреть способы обработки запросов в среде Java/Spring из среды PHP.

Смежные вопросы