Nous avons travaillé sur le même sujet (l'injection d'un personnalisé SecurityContextRepository à SecurityContextPersistenceFilter) pendant 4 à 5 heures aujourd'hui. Enfin, nous avons pensé à elle.
Tout d'abord, dans la section 8.3 du Printemps de Sécurité réf. doc, il y a un SecurityContextPersistenceFilter bean définition
<bean id="securityContextPersistenceFilter" class="org.springframework.security.web.context.SecurityContextPersistenceFilter">
<property name='securityContextRepository'>
<bean class='org.springframework.security.web.context.HttpSessionSecurityContextRepository'>
<property name='allowSessionCreation' value='false' />
</bean>
</property>
</bean>
Et après cette définition, il y a cette explication:
"Sinon, vous pouvez fournir une valeur null à la mise en œuvre de la SecurityContextRepository de l'interface, ce qui empêchera le contexte de sécurité d'être stocké, même si une session a déjà été créé lors de la demande."
Nous avons besoin d'injecter de notre coutume SecurityContextRepository dans le SecurityContextPersistenceFilter. Nous avons simplement changé le haricot définition ci-dessus avec notre impl personnalisé et de le placer dans le contexte de sécurité.
Lors de l'exécution de l'application, nous avons retracé les journaux et vu que SecurityContextPersistenceFilter n'était pas à l'aide de notre impl personnalisé, il a été à l'aide de la HttpSessionSecurityContextRepository.
Après quelques autres choses que nous avons essayé, nous avons compris que nous devions donner notre coutume SecurityContextRepository impl avec la "sécurité-contexte-référentiel-ref" attribut de "http" de l'espace de noms. Si vous utilisez le "http" de l'espace de noms et voulez injecter votre propre SecurityContextRepository impl, essayez de "sécurité-contexte-référentiel-ref" attribut.
Lorsque le "http" de l'espace de noms est utilisé, une salle de SecurityContextPersistenceFilter définition est ignoré. Comme je l'ai copié ci-dessus, le document de référence. ne pas l'indiquer.
Veuillez me corriger si j'ai mal compris les choses.