Регистрация, создание и управление учетной записью пользователя Spring Security - PullRequest
19 голосов
/ 22 декабря 2011

Я изучал использование Spring Security для аутентификации / авторизации моего веб-приложения (это будет основано на JDBC).

Однако, с моей точки зрения, основной компонент, похоже, не учтен. Как мне зарегистрироваться / создать новых пользователей? Есть ли готовый API для этого?

Нужно ли мне писать регистрацию пользователей и управление с нуля? Что мне нужно сделать, это: - Регистрация нового пользователя - Сброс паролей - по электронной почте пользователю, чтобы активировать его учетную запись - Отправка пользователю электронного письма для сброса его учетной записи.

Спасибо заранее.

Ответы [ 3 ]

9 голосов
/ 22 декабря 2011

Я использую Spring Security в своем проекте. Фреймворк не имеет API для создания или регистрации пользователей, как вы просили. Чтобы Spring Security был универсальным и пригодным для использования в нескольких средах, вам понадобится лишь так много времени, прежде чем вам придется писать собственный код. Вы не можете получить более конкретный ответ о платформе или инструменте, чтобы использовать, потому что в этот момент вы просто будете использовать каркасы, которые вы уже используете в любом случае.

Если вы настроили его для использования пользователей и ролей в вашей базе данных, из уровня доступа к данным вы создадите запись в таблице пользователей или обновите пароль (желательно, сохраненный в виде хеша) в этой записи. И, как сказал Аравинд, Spring предоставляет поддержку по электронной почте .

Если вы действительно хотите увидеть один способ сделать это: я использую Spring MVC, JSP и Hibernate. Я использую теги формы Spring в JSP, чтобы связать новую пользовательскую форму с объектом Person, и мой метод контроллера передает этот объект Person моему Dao, чтобы сохранить его.

Подпись метода контроллера выглядит следующим образом ...

@RequestMapping(value = "/newUser", method = RequestMethod.POST)
public ModelAndView createNewUser(final @Valid @ModelAttribute Person user,
                                  final BindingResult result,
                                  final SessionStatus status,
                                  final @RequestParam(value = "unencodedPassword", required = true) String password) {
        ...
        user.getRoles().add(new Role(user, Role.APPLICATION_ROLE.ROLE_USER));
        userDao.createNewUser(user);
        ...
}

и мой PersonDao будет использовать Hibernate для сохранения пользователя, как это

@Transactional
public void createNewUser(Person user)
{
    Session session = sessionFactory.getCurrentSession();
    session.save(user);
    session.flush();
}
1 голос
/ 22 мая 2014

Посмотрите на мой ответ здесь .

"Я реализовал проект JAVA для этого варианта использования. Он открыт источник, основанный на Spring-Security. Релиз версия включена Maven-Central, так что вам не нужно его компилировать, но вместо этого вы можете получите это как зависимость от вашего проекта! "

<dependency>
     <groupId>com.ohadr</groupId>
     <artifactId>authentication-flows</artifactId>
     <version>1.5.0-RELEASE</version> 
</dependency>
1 голос
/ 22 декабря 2011

Насколько я знаю, Spring Security не имеет встроенной поддержки для создания и регистрации новых пользователей.Вам придется справиться с этим самостоятельно.Однако у него есть поддержка по электронной почте.Проверьте здесь для получения дополнительной информации.

...