18

He estado buscando el uso de Spring Security para la autenticación/autorización de mi aplicación web (esta será basada en JDBC).Registro, creación y gestión de la cuenta de usuario de Spring Security

Sin embargo, un componente central parece estar fuera de mi perspectiva. ¿Cómo me registro/creo nuevos usuarios? ¿Hay una API lista para usar?

¿Necesito escribir desde cero el registro y la gestión del usuario? Lo que necesito hacer es incluir: - Registrar un nuevo usuario - Restablecer las contraseñas - Enviar por correo electrónico un usuario para activar su cuenta - Enviar un correo electrónico a un usuario para restablecer su cuenta.

Gracias de antemano.

+0

http://stackoverflow.com/questions/23562266/create-account-forgot-password-and-change-password – OhadR

Respuesta

9

Utilizo Spring Security en mi proyecto. El marco no tiene una API para la creación o el registro del usuario como usted solicitó. Para que Spring Security sea genérico y utilizable en múltiples marcos, solo puede llevarlo hasta el momento antes de que tenga que escribir un código personalizado. Realmente no se puede obtener una respuesta más específica acerca de un marco o herramienta para utilizar, porque en este punto simplemente usarás los marcos que ya estás usando de todos modos.

Si lo ha configurado para usar usuarios y roles en su base de datos, desde su capa de acceso a datos crearía un registro en la tabla de usuarios o actualizaría una contraseña (preferiblemente almacenada como un hash) en ese registro. Y como dijo Aravind, Spring proporciona email support.

Si realmente quiere ver una forma de hacerlo: estoy usando Spring MVC, JSP e Hibernate. Utilizo las etiquetas de formulario de Spring en un JSP para vincular un nuevo formulario de usuario a un objeto Person, y mi método de controlador pasa ese objeto Person a mi Dao para persistirlo.

El método de firma del controlador se parece a esto ...

@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); 
     ... 
} 

y mi PersonDao usaría Hibernate que persista el usuario al igual que

@Transactional 
public void createNewUser(Person user) 
{ 
    Session session = sessionFactory.getCurrentSession(); 
    session.save(user); 
    session.flush(); 
} 
+1

Gracias por la información.Sin embargo, ¿tiene una recomendación sobre una API/Framework/Tool para manejar la creación/registro de usuarios fuera de la primavera? ¿O me recomiendan que escriba uno desde cero? –

+2

Sí, te recomiendo que escribas uno desde cero. Para darle una idea de cuánto tiene que escribir, para registrar un nuevo usuario, tengo tal vez una docena de líneas de JSP, una docena de líneas en un controlador Spring MVC y solo unas pocas líneas en un DAO. Spring Security te lleva la mayor parte del camino, deberás escribir muy poco código para terminarlo. La razón por la que no existe una API para gestionar la creación de usuarios fuera de Spring es que solo utilizará las tecnologías que ya esté utilizando, como JSP o JSF, e Hibernate o JDBC. – Jay

1

Por lo que sé, Spring Security no cuenta con soporte incorporado para la creación y el registro de nuevos usuarios. Tendrá que manejar esto usted mismo. Sin embargo, tiene soporte de correo electrónico. Consulte here para obtener más información al respecto.

+0

Gracias por la información. Sin embargo, ¿tiene una recomendación sobre una API/Framework/Tool para manejar la creación/registro de usuarios fuera de la primavera? ¿O me recomiendan que escriba uno desde cero? –

+0

Puede obtener algunos buenos widgets creados con JQuery e integrarlos con Spring. También puede basar su Login en openid pero al final nada viene con funcionalidad incorporada. Tendrás que codificarlo. - Aravind A hace 11 horas –

1

Tener un vistazo a mi respuesta here.

"He puesto en marcha un proyecto Java para este caso de uso. Está abierto fuente, sobre la base de Primavera-Seguridad. Una versión de lanzamiento está en Maven-central, por lo que no es necesario para compilar, pero en su lugar, puede buscarlo como maven-dependency para su proyecto! "

<dependency> 
    <groupId>com.ohadr</groupId> 
    <artifactId>authentication-flows</artifactId> 
    <version>1.5.0-RELEASE</version> 
</dependency> 
Cuestiones relacionadas