Логин не работает, используя Spring Security в Icefaces - PullRequest
0 голосов
/ 22 февраля 2011

Я пытаюсь использовать логин Icefaces с Spring security. По какой-то причине я не могу успешно войти в свое приложение. Он всегда дает неверное имя пользователя или пароль, даже если я использую правильные данные для аутентификации. Я использую Icefaces 1.8.2 и JSF 1.1.

Может ли кто-нибудь помочь, почему я не могу войти в систему успешно, несмотря на предоставление правильных данных аутентификации.

Я следую примеру здесь

Мой логин.jspx

<?xml version="1.0" encoding="ISO-8859-1" ?>
<f:view xmlns:f="http://java.sun.com/jsf/core"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:ice="http://www.icesoft.com/icefaces/component">
    <ice:outputDeclaration doctypeRoot="HTML"
                           doctypePublic="-//W3C//DTD HTML 4.01 Transitional//EN"
                           doctypeSystem="http://www.w3.org/TR/html4/loose.dtd"/>
    <html>
    <head>
        <title>Spring Security Login</title>
    </head>
    <body>
    <ice:form partialSubmit="false">
        <ice:panelGrid columns="2">
            <ice:outputLabel value="User Name" for="j_username"/>
            <ice:inputText id="j_username"
                           value="#{loginBean.userId}" size="40"
                           maxlength="80"/>
            <ice:outputLabel value="Password" for="j_password"/>
            <ice:inputSecret id="j_password"
                             value="#{loginBean.password}" size="40"
                             maxlength="80"/>
        </ice:panelGrid>
        <ice:commandButton actionListener="#{loginBean.login}" value="Login"/>
        <ice:messages style="color: red;"/>
    </ice:form>
    </body>
    </html>
</f:view>

И мой метод входа в систему loginBean

public void login(ActionEvent e) throws java.io.IOException {
HttpServletRequest req =
(HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
       FacesContext.getCurrentInstance().getExternalContext().redirect(req.getContextPath().toString() + 
                                                                    "/j_spring_security_check?j_username=" + 
                                                                    userId + "&j_password=" + 
                                                                    password);


}

1 Ответ

1 голос
/ 22 февраля 2011

Хорошо, мне удалось заставить его работать, используя старый старый jsp, а не jsf, и метод действия формы должен быть POST

my login.jsp

<form action="j_spring_security_check" method="POST"> 
    <label for="j_username">Username</label>
<input type="text" name="j_username" id="j_username"/><br/> 
    <label for="j_password">Password</label>
<input type="password" name="j_password" id="j_password"/><br/>         
    <input type="submit" value="Login"/>   
</form>
...