| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > spring security - ручная аворизация |
| Автор: iluvatar 7.8.2010, 21:00 |
| Есть приложение, механизмы авторизации - на spring security, а для регистрации используется свой модуль. После регистрации бросаем письмо пользователю на мыло, он должен пройти по ссылке для активации и после этого хочется его залогинить. Варианта два я вижу два: 1. редирекнуть его на /j_spring_security_check предварительно записав в запрос логин/пароль 2. вручную положить принципиал в сессию. Для этого надо бросить в контекст объект класса UsernamePasswordAuthenticationToken. А для этого потребуется пароль для поля credentials Основная проблема в том, что пароли хранятся в зашифрованном виде и доступа к незашифрованным нет, а для обоих вариантов нужен как раз незашифрованный. Как быть? |
| Автор: ki6opr 9.8.2010, 03:06 |
| ну писать в запрос логин и пароль явно не самая удачная идея. мне так кажется что если пароль не положить ничего страшного не будет (только если вы потом в приложении не попросите пользователя ввести его еще раз, для какого-нибудь подтверждения). Во всяком случае спринг секьюрити проверяет пароль только в AuthenticationProvider'е |
| Автор: Joss 9.8.2010, 10:18 |
| Я так понимаю, активация происходит приблизительно т.о.: после регистрации для нового пользователя генерится некий activation code, который встраивается в ссылку, отправляемую пользователю на мыло. Пользователь переходит по ссылке и аккаунт благополучно активируется. Дальше нужно автоматически залогинить пользователя. Я правильно понимаю проблему? Что если сделать еще один механизм аутентификации по activation code, который, в принципе, будет отрабатывать только раз для пользователя, активируя аккаунт? Ведь связка activation code - user существует. |
| Автор: iluvatar 9.8.2010, 15:09 |
| Joss, да, механизм именно такой. Если подскажете как реализовать такую авторизацию средствами спринга - вопрос будет решен, а я буду благодарен во-веки-веков. Kircul, Я ручками смотрел что находится в сессии, там есть поле, содержащее пароль в незахешированном виде. Не могу сказать для чего это поле вообще используется, но оно там есть. |
| Автор: iluvatar 13.8.2010, 13:12 |
| может, кому-то пригодится http://ru.wikibooks.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BE%D0%B1%D0%B7%D0%BE%D1%80_Spring_Security#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D1.81.D0.BE.D0.B4.D0.B5.D1.80.D0.B6.D0.B8.D0.BC.D0.BE.D0.B3.D0.BE_SecurityContextHolder_.D0.BD.D0.B0.D0.BF.D1.80.D1.8F.D0.BC.D1.83.D1.8E |