In Spring Security 3.1 Sto usando l'autenticazione basata su moduli e desidero inserire attributi aggiuntivi nell'oggetto UserDetails

StackOverflow https://stackoverflow.com/questions/9367089

  •  28-10-2019
  •  | 
  •  

Domanda

Sono nuovo a Springs e non un programmatore avanzato di Java.

Sto creando un prototipo in cui sto usando la sicurezza di Springs. Per mantenerlo semplice, sto usando l'autenticazione utente basata su moduli JSP e ho alcuni utenti fittizi nel mio applicazioneContext-Security.xml

<security:http auto-config='true'>
  <security:intercept-url pattern="/**" access="ROLE_USER" />
</security:http>

<security:authentication-manager>
  <security:authentication-provider>
    <security:user-service>
      <security:user name="foo" password="foo" authorities="ROLE_USER, ROLE_ADMIN" />
      <security:user name="bob" password="bob" authorities="ROLE_USER" />
    </security:user-service>
  </security:authentication-provider>
</security:authentication-manager>

L'idea è che in seguito questo metodo di autenticazione verrà sostituito dall'autenticazione aperta.

Ora ciò di cui ho bisogno è una volta che l'utente è autenticato, utilizzando il nome utente autenticato che vorrei recuperare ulteriori dettagli dell'utente da una tabella di database e metterlo nell'oggetto UserDetails Springs in modo che sia sempre disponibile per me

Quello che ho studiato finora è che ho bisogno di creare il mio UserDetailSservice personalizzato

La mia domanda è se sto usando il metodo di autenticazione standard Springs, devo creare un servizio utente personalizzato? Voglio solo archiviare alcuni dettagli aggiuntivi leggerlo da un database.

Ho attraversato molti esempi ma nessuno di loro risponde a questo particolare problema. Anche dal momento che sono poco nuovo per queste tecnologie. Mi perdo no come legare insieme i frammenti di codice. Qualsiasi aiuto per indicarmi la giusta direzione sarebbe fantastico

Grazie

È stato utile?

Soluzione

Sì. Generalmente hai bisogno di un'usanza UserDetailsService che restituisce la tua estensione UserDetails oggetto con le proprietà aggiuntive che desideri. Troverai molte configurazioni di esempio se cerchi così, come Questo, Per esempio.

A rigor di termini, non devi usare un UserDetailsService o implementare UserDetails (Puoi implementare AuthenticationProvider direttamente), ma è l'approccio più semplice per stare con e probabilmente dove dovresti iniziare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top