Bonjour Je débute tout juste avec Cocoon et j'aimerais effectuer une authentification par rapport a une base SQL, j'ai donc modifié le code de l'exemple auth-fw pour consulter ma base SQL à la place du fichier xml fourni. Le driver MySQL est bien installé et la connection est ouverte lors du lancement du serveur Tomcat (visible dans les logs du serveur sql). Lorsque je valide l'identifiant, rien n'apparait dans les logs MySQL et je suis redirigé sur la page de login. Le problème viens surement de authenticate.xsl mais je vois pas ce que ça peut être :/
Différents liens sur lesquels je me suis basé: * cocoon + mysql - http://wiki.apache.org/cocoon/MySQL * SQL transformer - http://cocoon.apache.org/2.1/userdocs/transformers/sql-transformer.html * Auth-fw + SQL - http://www.mail-archive.com/[email protected]/msg22930.html - http://www.mail-archive.com/[email protected]/msg27130.html - http://www.mail-archive.com/[email protected]/msg27185.html Voici le contenu des fichiers concernés : Dans cocoon.xconf: ... <jdbc name="mydb"> <pool-controller min="5" max="10"/> <dburl>jdbc:mysql://localhost:3306/mydb?autoReconnect=true</dburl> <user>myuser</user> <password>mypasswd</password> </jdbc> ... Dans sitemap.xmap: ... <map:pipeline internal-only="true"> <!-- This is the authentication resource --> <map:match pattern="authenticate"> <map:generate src="docs/userlist-sql.xml"/> <map:transform type="sql"> <map:parameter name="use-connection" value="mydb"/> <map:parameter name="show-nr-of-rows" value="true"/> <map:parameter name="clob-encoding" value="UTF-8"/> <map:parameter name="parameter_name" value="{request-param:username}"/> <map:parameter name="use-request-parameters" value="true"/> </map:transform> <map:transform src="stylesheets/authenticate-sql.xsl"> <map:parameter name="use-request-parameters" value="true"/> </map:transform> <map:serialize type="xml"/> </map:match> </map:pipeline> ... Dans userlist-sql.xml: <?xml version="1.0" encoding="UTF-8"?> <authentication> <execute-query xmlns="http://apache.org/cocoon/SQL/2.0"> <use-connection>mydb</use-connection> <query name="userslist"> SELECT login from users WHERE login='<substitute-value name="parameter_name"/>' </query> </execute-query> </authentication> Dans authenticate-sql.xml: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- Get the name from the request parameter --> <xsl:param name="login"/> <xsl:template match="authentication"> <authentication> <xsl:apply-templates select="rowset"/> </authentication> </xsl:template> <xsl:template match="row"> <!-- Compare the name of the user --> <xsl:if test="normalize-space(login) = $login"> <!-- found, so create the ID --> <ID><xsl:value-of select="name"/></ID> </xsl:if> </xsl:template> </xsl:stylesheet> Si vous avez des idées je suis preneur, merci :)
