La combinaison de corporateId et de nom d'utilisateur est unique pour nous dans la table des utilisateurs.Authentification avec Spring Security avec usersByUsernameQuery
Je sais printemps fournir un mécanisme pour écrire une requête personnalisée pour l'authentification.
<bean id="authenticationDao"
class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl">
<property name="dataSource" ref bean="dataSource" />
<property name="usersByUsernameQuery">
<value>
SELECT username,password,enabled
FROM User WHERE username=? and corporateId=?
</value>
</property>
</bean>
Mais le problème ici est que nous avons deux variables de liaison dans la requête au lieu d'une. Je ne suis pas sûr comment j'utilise le cadre de sécurité de printemps avec cette structure DB. La clé primaire de la table User est UserId. Est-il possible de mettre un préprocesseur avant d'appeler la méthode d'authentification par laquelle je peux récupérer userId par la combinaison de nom d'utilisateur et d'ID d'entreprise, puis utiliser SELECT nom d'utilisateur, mot de passe, activé FROM User WHERE userid =? requête.
Toute aide serait très apperçu.