Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Spring security remember-me настройка?!


Автор: acvilon 8.12.2009, 15:09
Решил настроить у себя в приложении Spring Securiry remember me. Покопался в исходниках, красота конечно. В PersistentRememberMeToken есть поле series. В JdbcTokenRepositoryImpl, создается табличка 
Код

сreate table persistent_logins (username varchar(64) not null, series varchar(64) primary key,  varchar(64) not null, last_used timestamp not null)
.
 
Теперь вопрос, что же такое series? Его можно задавать косвенно в PersistentTokenBasedRememberMeServices - seriesLength.

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

Сюда приглашается MisterCleric.
И ему заранее говорится спасибо за предыдущие советы и за будущие smile

Автор: MisterCleric 8.12.2009, 15:40
Привет. Спасибо за уважение, но я еще не помог.
Если честно, то ни разу еще не реализовывал функционал remember me.
Но попробую помочь, мож наведу на мысль.
Так вот нашел в PersistentTokenBasedRememberMeServices
такой метод:
Код

 protected String generateSeriesData() {
        byte[] newSeries = new byte[seriesLength];
        random.nextBytes(newSeries);
        return new String(Base64.encodeBase64(newSeries));
    }


Так вот по нему видно, что для этого поля в базе (primary key!) генерится уникальное значение и кодируется.
Потом это дело юзается чуть ниже:
Код

private void addCookie(PersistentRememberMeToken token, HttpServletRequest request, HttpServletResponse response) {
        setCookie(new String[] {token.getSeries(), token.getTokenValue()},getTokenValiditySeconds(), request, response);
    }


т.е. они таким образом используют одно и тоже значение для уникальной идентификации токана по rememberMe и для заедения соответсвующего куки в браузере.
Потом, наверное, по идентификатору куки достается запись из базы: по primary key.
Вот, собственно, и вся логика. Так что, думаю, не заморачивайся и используй стандартный механиз, должно работать.  smile 

Автор: acvilon 8.12.2009, 15:52
У меня просто база другая. В моей системе логином может быть и логин, и email. Странно, что у них на username не накладывается уникальность.

Автор: acvilon 9.12.2009, 20:05
Спасибо, кстати. Переписал два класса под свои нужды и все работает. Спринг мне нравитсяsmile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)