2011-08-24 11 views
6

Voglio utilizzare la protezione primavera per autenticare gli utenti nella mia applicazione web .. Dal momento che non sono un utente maturato al framework Spring, non posso ottenere una chiara idea di come possiamo fare le impostazioni di configurazione da utilizzare JDBC-dall'utente servizio .. avevo fatto la seguente configurations.but sua non funzionaUtilizzo del database mysql per autenticare gli utenti nella sicurezza di Spring?

<authentication-manager> 
    <authentication-provider> 
     <jdbc-user-service data-source-ref="myDataSource"/> 
    </authentication-provider>   
</authentication-manager> 
<beans:bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <beans:property name="url" value="jdbc:mysql://localhost:3306/testDB"/> 
    <beans:property name="username" value="admin"/> 
    <beans:property name="password" value="admin"/> 
</beans:bean> 

..can qualcuno per favore mi aiuti a risolvere il problema con un file di esempio di configurazione. Grazie in anticipo.

+0

Qual è il tuo problema? Puoi pubblicare tracce di stack o descrizioni più chiare di eventuali problemi che stai affrontando? – beny23

risposta

6

Di solito lo fanno con un costume UserDetailsService. Il UserDetailsService è un DAO utilizzato per caricare dati su un utente quando tentano di accedere. Date un'occhiata al metodo loadUserByUsername(String username) e la classe UserDetails in primavera.

Yo bisogno di definirlo nel vostro contesto:

<bean id="myDetailsService" 
    class="com.company.service.impl.MyDetailsService" /> 

Per usarlo è possibile aggiungere questo alla vostra configurazione di sicurezza:

<authentication-manager> 
    <authentication-provider user-service-ref="myDetailsService" /> 
</authentication-manager> 

e voi tutti i filtri di sicurezza lo userà.

Puoi chiedere una domanda più specifica se hai bisogno di aiuto per implementarlo, ma non avrai problemi a IMO.

+0

u può solo dare una breve circa la sua attuazione too..i hanno provato per questo, ma la sua non ottenere. –

+0

è possibile visualizzare i dettagli sull'implementazione nel collegamento fornito nella risposta. http://www.codercorp.com/blog/spring/security-spring/writing-custom-userdetailsservice-for-spring-security.html – Simeon

+0

sì..ho capito. –

6

un altro modo per farlo è quello di creare tabelle utilizzando lo schema del database di sicurezza molla standard (http://static.springsource.org/spring-security/site/docs/3.0.x/reference/appendix-schema.html). Poi si può semplicemente utilizzare di primavera JDBC-userservice:

<security:authentication-provider > 
    <security:jdbc-user-service data-source-ref="dataSource" /> 
    <security:password-encoder hash="sha" /> 
</security:authentication-provider> 

Oppure, se si desidera utilizzare il proprio schema è possibile ignorare le query come questo:

<security:authentication-provider> 
    <securiy:jdbc-user-service 
     data-source-ref="dataSource" 
     users-by-username-query="select username, password from users where username=?" 
     authorities-by-username-query="select username, roleName from role..." 
     role-prefix="ROLE_" 
    /> 
</security:authentication-provider> 
+0

questa domanda è stata riparata? Perché quando cambio la query secondo le mie tabelle questo non funziona, funziona solo quando disegno in base a questa query. – RishiPandey

1

aggiungere queste righe al tag <authentication-provider> :

Ovviamente dovrai modificare le query in modo che corrispondano ai nomi dei tuoi tavoli.

Problemi correlati