2010-12-09 3 views
0

Ma page était java avec Wicket comme front-end. Maintenant, j'ai une page de démarrage wordpress avec un formulaire de connexion. Lorsque je saisis l'e-mail et le mot de passe dans ce formulaire de connexion, je souhaite le rediriger vers un service de connexion qui redirige ensuite l'utilisateur vers la page d'accueil du portillon si la connexion est réussie.POST à ​​Java à partir de Wordpress

La façon dont j'ai essayé de faire ceci est en envoyant un message de POST de la page wordpress, et le manipule avec un service dans mon application de Java. Cela ne fonctionne pas bien pour moi.

Est-ce un bon moyen de le faire? Sinon, quelles sont les autres possibilités?

C'est la mise en œuvre, je l'ai essayé aujourd'hui:

(simulation du post-action de la page wordpress sur le dessus)

<FORM action="http://localhost:8080/Login" method="post"> 
    <P> 
    <LABEL for="email">Email: </LABEL> 
       <INPUT type="text" id="email"><BR> 
    <LABEL for="password">Password: </LABEL> 
       <INPUT type="text" id="password"><BR> 

    <INPUT type="submit" value="Send"> <INPUT type="reset"> 
    </P> 
</FORM> 

Service:

@Path("/Login") 
@Consumes("application/xml") 
public class LoginServiceImpl implements LoginService{ 

private static final Response USER_AUTHORIZATION_FAILED = Response.status(
    Status.NOT_ACCEPTABLE).build(); 

private static final Response USER_SUCCESSFULLY_AUTHORIZED = Response.status(
    Status.ACCEPTED).build(); 

@Autowired 
private UserController userController; 

@Override 
@POST 
public Response login(@QueryParam("email") String email, 
    @QueryParam("password") String password) { 

    boolean authenticated = userController.authenticate(email, 
    password); 
    User u = userController.findByEmail(email); 

    if (u != null && u.getUserType() == UserType.COMPANY_RECRUITER) { 
    handleCompanyRecruiter(u); 
    return USER_SUCCESSFULLY_AUTHORIZED; 
    } 
    else if ((authenticated && u != null) && (u.getCompany().getIsActive())) { 
    signInUser(u); 
    setCorrectResponsePage(u); 
    return USER_SUCCESSFULLY_AUTHORIZED; 
    } 
    else{ 
    return USER_AUTHORIZATION_FAILED; 
    } 
} 

applicationContext:

<!-- LOGIN SERVICE --> 
     <jaxrs:server id="loginService" address="/login"> 
     <jaxrs:serviceBeans> 
     <ref bean="loginServiceBean" /> 
     </jaxrs:serviceBeans> 
     <jaxrs:providers> 
     <ref bean="jaxbProvider" /> 
     <ref bean="notFoundExceptionMapper" /> 
     </jaxrs:providers> 
    </jaxrs:server> 

<bean class="services.CandidateServiceImpl" 
     id="candidateServiceBean" /> 

L'exécution de ce, quand je rentre dans le formulaire et appuyez sur Envoyer Je reçois cette erreur:

HTTP ERROR: 404 

NOT_FOUND 
RequestURI=/Login 

Me annoter le LoginServiceImpl avec @Path («/Connexion ») est peut-être pas la bonne façon? Comment rediriger le POST vers l'emplacement correct?

Et voici le vieux Wicket page pour la connexion:

<wicket:panel> 
<wicket:extend>  
    <div id="top_login"> 
     <form wicket:id="loginForm"> 
       <div> 
        <label for="loginEmail" wicket:id="loginEmailLabel">Email</label> 
        <input class="text" id="loginEmail" wicket:id="loginEmail" tabindex="101" /> 
       </div> 
       <div> 
        <label for="loginPassword" wicket:id="loginPasswordLabel">Password</label> 
        <input class="text" type="password" id="loginPassword" wicket:id="loginPassword" tabindex="102" /> 
       </div> 
       <div class="loginBtnArea"> 
        <input wicket:id="loginButton" class="submit" type="submit" tabindex="103" value="Login" /> 

       </div> 
      </form> 
      <a wicket:id="forgotPasswordLink"><span class="forgotPassword" wicket:id="forgotPasswordLabel">Forgot your password?</span></a>       
    </div> 
</wicket:extend> 
</wicket:panel> 
+0

pourquoi vous voulez utiliser la page d'accueil wordpress? Wicket devrait être assez bon pour soutenir votre écran d'accueil. – dimitrisli

+0

C'est une exigence d'affaires que je n'ai aucun contrôle de ... Je suis d'accord que c'est stupide. –

Répondre

1

Il semble que le problème est dans votre config et non pas dans la pensée procédure elle-même.

Déclarez un bean avec l'ID loginServiceBean dans votre applicationContexte.

EDIT:

Je ne suis pas tout à fait familier avec les techniques que vous utilisez, mais pourrait-il que les @Consumes("application/xml") -annotation bloque la demande? Vous pourriez essayer de mettre @Consumes("application/x-www-form-urlencoded") -annotation à votre méthode, qui est censée gérer les données de connexion.

Soure: http://docs.sun.com/app/docs/doc/820-4867/ggqqr?a=view

EDIT^2:

action de votre formulaire est http://localhost:8080/Login. Si je comprends bien, il devrait être http://localhost:8080/Login/login

+0

Merci beaucoup, cela m'a aidé à passer l'applicationContext-erreur. J'ai mis à jour mon message. Le gros problème est de savoir comment faire en sorte que le service parle avec le code Java, et c'est là que j'ai l'impression de lutter. –

+0

J'ai essayé d'utiliser @Consumes ("application/x-www-form-urlencoded") mais il a produit la même erreur 404. J'ai également essayé de supprimer l'annotation @Consumes, en recevant également la même erreur 404. –

+0

J'ai essayé d'ajouter http: // localhost: 8080/Login/login à mon action de formulaires, mais l'erreur reste la même. –