Nous avons une application MVC printemps. Nous essayons d'intégrer la sécurité de printemps.
Nous avons écrit notre fournisseur d'authentification personnalisé qui fera le travail d'authentification. p>
ci-dessous est le code de mon fournisseur d'authentification personnalisé. p>
<beans:bean id="customAuthenticationProvider" class="com.myApp.security.provider.CustomAuthenticationProvider"> <beans:property name="userDetailsService" ref="userDetailsService"/> </beans:bean>
7 Réponses :
Vous devez définir votre CustomAuthenticationProvider en tant que haricot de printemps (dans ApplicationContext.xml en général ou ApplicationContext-Security.xml si vous en avez un) p>
C merci pour la réponse. J'ai défini mon fournisseur d'authentification personnalisé à Spring Security XML. S'il vous plaît voir j'ai mis à jour ma question. Dois-je faire autre chose?
Je ne vois pas votre service d'authentifié dans votre fichier de configuration haricot. L'authentifier doit également être défini comme un haricot. Votre personnalité CustomAuthenticantication est-elle également autonome où vous essayez de l'utiliser? Parce que si vous l'instachez vous-même, le printemps ne peut pas l'envelopper dans un proxy
AuthentifierService n'est pas défini dans le fichier de configuration du haricot, car j'ai utilisé l'annotation @service ici.
Peut-être postprocesseur d'application automatique n'est pas activé dans le contexte de l'application racine (mais activé dans le contexte code> Disternersservlet Code> comme un effet secondaire de Vous pouvez l'activer en ajoutant
myApp-Security.xml code>. P>.
J'ai essayé cela mais ça ne fonctionne pas. En fait, après avoir ajouté cette ligne dans mon myApp-Security.xml, l'application n'est même pas déployée.
@Ashish: Avez-vous également ajouté la définition de schéma code> correspondante code> dans l'en-tête XML?
S'il n'y a pas de chance, pourquoi avez-vous marqué cela comme la bonne réponse ?!
Comment ça est marqué comme la réponse correcte.non la chance du tout. Downvote pour sauver les autres temps.
Downvoting car ce n'est pas la bonne réponse, voir la réponse de Rob Winch.
Utilisez-vous l'élément
@Autowired code> du travail lors de l'utilisation de
GOOOOD !!! J'ai passé 4 heures à comprendre pourquoi il ne fonctionnait pas et j'ai même créé ce message
J'ai expérimenté cette question et je suis arrivé à la conclusion que, tout en ayant eu lieu, la sécurité de printemps fonctionnait avec un exemple complètement différent des classes. Pour résoudre ce problème, j'ai importé la configuration de sécurité dans la configuration de Spring MVC comme ci-dessous.
Ceci permettait la sécurité du ressort de partager le contexte avec mon Spring MVC. P>
<import resource="myapp-security.xml" />
vous devriez utiliser Vous ne pouvez pas utiliser car votre myApp-Security.xml crée une autre applicationContext qui ne voit pas toute la mise en forme de mise en forme de votre contexte créé par MyApp-servlet.xml p>
J'ai fait face au même problème et corrigé cela.
La solution est même si vous avez @Autowired annotation définie pour la classe de service. p> retiré la définition de haricot dans votre répartiteur-servle.xml et cela fonctionnera. P> <!--
<beans:bean id="customAuthenticationProvider" class="com.myApp.security.provider.CustomAuthenticationProvider">
<beans:property name="userDetailsService" ref="userDetailsService"/>
</beans:bean>
-->
Si vous utilisez le ressort MVC, vous devez ajouter <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-security.xml
/WEB-INF/dispatcher-servlet.xml
</param-value>
</context-param>
Avez-vous des fichiers journaux qui signalent quelque chose d'utile?