18

Ho cercato di utilizzare Spring Security per l'autenticazione/l'autorizzazione della mia applicazione web (questa sarà basata su JDBC).Spring Security registrazione, creazione e gestione account utente

Tuttavia, un componente principale sembra essere escluso dalla mia prospettiva. Come posso registrare/creare nuovi utenti? C'è una API pronta per quello?

Devo scrivere la registrazione e la gestione degli utenti da zero? Le cose che devo fare sono: - Registrazione di un nuovo utente - Reimpostazione delle password - Invio via email di un utente per attivare il proprio account - Inviare via email a un utente per reimpostare il proprio account.

Grazie in anticipo.

+0

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

risposta

9

Uso Spring Security per il mio progetto. Il framework non ha un'API per la creazione o la registrazione degli utenti come richiesto. Perché Spring Security sia generico e utilizzabile su più framework, può solo portarti a termine prima di dover scrivere codice personalizzato. Non si può davvero ottenere una risposta più specifica su un framework o uno strumento da utilizzare perché a questo punto si useranno solo i framework che si stanno già utilizzando.

Se è stato impostato per utilizzare utenti e ruoli nel database, dal livello di accesso ai dati si creerà un record nella tabella utente o si aggiornerà una password (preferibilmente memorizzata come hash) in tale record. E come ha detto Aravind, Spring fornisce email support.

Se vuoi davvero vedere un modo per farlo: sto usando Spring MVC, JSP e Hibernate. Io uso i tag form di Spring in un JSP per associare un nuovo modulo utente a un oggetto Person e il mio metodo controller passa quell'oggetto Person al mio Dao per mantenerlo.

La firma del metodo di controllo si presenta così ...

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

e la mia PersonDao avrebbe usato Hibernate a persistere l'utente in questo modo

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

Grazie per l'informazione.Tuttavia, hai una raccomandazione su un API/Framework/Tool per gestire la creazione/registrazione degli utenti al di fuori di primavera? O mi consiglia di scriverne uno da zero? –

+2

Sì, vi consiglio di scriverne uno da zero. Per darti un'idea di quanto devi scrivere, per registrare un nuovo utente ho forse una dozzina di righe di JSP, una dozzina di righe in un controller MVC di Spring e solo poche righe in un DAO. Spring Security ti dà la maggior parte del tempo, dovresti scrivere pochissimo codice per finirlo. Il motivo per cui non esiste un'API per gestire la creazione degli utenti al di fuori di Spring è che userete semplicemente le tecnologie che state già utilizzando, come JSP o JSF e Hibernate o JDBC. – Jay

1

Per quanto ne so, Spring Security non ha il supporto integrato per la creazione e la registrazione di nuovi utenti. Dovrai gestirlo da solo. Tuttavia ha il supporto via email. Controlla here per ulteriori informazioni.

+0

Grazie per l'informazione. Tuttavia, hai una raccomandazione su un API/Framework/Tool per gestire la creazione/registrazione degli utenti al di fuori di primavera? O mi consiglia di scriverne uno da zero? –

+0

È possibile ottenere alcuni buoni widget creati con JQuery e integrarli con Spring. Puoi anche basare il tuo Login su openid, ma alla fine nulla viene fornito con funzionalità incorporate. Dovrai codificarlo. - Aravind A 11 ore fa –

1

Dai un'occhiata alla mia risposta here.

"Ho implementato un progetto Java per questo caso d'uso. E 'aperto source, basato su Spring-Security. Una versione di rilascio è in Maven-centrale, in modo non è necessario per compilarlo, ma invece puoi recuperarlo come dipendenza da maven dal tuo progetto! "

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