with tutorial example español con cerrar mysql spring authentication spring-security spring-jdbc

mysql - tutorial - spring security login example with database



¿Utiliza la base de datos mysql para autenticar usuarios en Spring security? (3)

Quiero usar la seguridad Spring para autenticar usuarios en mi aplicación web. Como no soy un usuario maduro para Spring framework, no puedo tener una idea clara de cómo podemos hacer los ajustes de configuración para usar jdbc-user-service. He hecho las siguientes configuraciones. Pero no funciona

<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>

... puede ayudarme alguien a resolver el problema con un archivo de configuración de muestra. Gracias por adelantado.


Agregue estas líneas a su etiqueta <authentication-provider> :

<authentication-provider> <password-encoder hash="sha-256" /> <jdbc-user-service data-source-ref="dataSource" users-by-username-query=" SELECT username, password, enabled FROM user WHERE username = ?" authorities-by-username-query=" SELECT u.username, r.role_name FROM user u, user_role r, assigned_role a WHERE u.id = a.username AND r.id = a.role_id AND u.username = ?" /> </authentication-provider>

Por supuesto, tendrá que ajustar las consultas para que coincidan con los nombres de su tabla.


Otra forma de hacerlo es crear tablas utilizando el esquema estándar de la base de datos de seguridad de primavera ( http://static.springsource.org/spring-security/site/docs/3.0.x/reference/appendix-schema.html ). Entonces, simplemente puede usar el jdbc-userservice de primavera:

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

O si desea usar su propio esquema, puede anular las consultas de esta manera:

<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>


Por lo general, lo haces con un servicio de UserDetailsService personalizado. El UserDetailsService es un DAO utilizado para cargar datos sobre un usuario cuando intentan iniciar sesión. Eche un vistazo al loadUserByUsername(String username) y la clase UserDetails en la primavera.

Yo necesito definirlo en tu contexto:

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

Para usarlo, puede agregar esto a su configuración de seguridad:

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

y todos tus filtros de seguridad lo usarán.

Puede hacer una pregunta más específica si necesita ayuda para implementarla, pero no tendrá problemas con la OMI.