1

アプリケーションに認証機能を実装しています。資格情報が無効な場合、同じログイン ページに移動したいのですが、j_username テキスト フィールドが入力されています。しかし、これを行う方法はありません。

私の login.jsp:

<html>
<head> <!-- connecting javascripts and styles --> </head>
<body>
<c:set var="base" value="/myProject" /> 

    <form:form commandName="loginUser" method="POST" action="${base}/j_spring_security_check">
        <h3 align="center"><spring:message code="login.header" /></h3>
        <table>
            <tr>
                <td align="right"><spring:message code="login.label.login" /></td>
                <td><input type="text" name="j_username" /></td>
                <td><div id="j_username" class="errors"><span id="j_username_stub"/><form:errors path="login" /></div></td>
            </tr>
            <tr>
                <td align="right"><spring:message code="login.label.password" /></td>
                <td><input type="password" name="j_password" /></td>
                <td><div id="j_password" class="errors"><span id="j_password_stub"/></div></td>
            </tr>
            <tr>
                <td align="right"><spring:message code="login.label.rememberme" /></td>
                <td><input type="checkbox" name="_spring_security_remember_me" /></td>
            </tr>
            <tr>
                <td align="right"><input type="submit" value="<spring:message code="login.button.login" />" /></td>

            </tr>
        </table>
    </form:form>
</html>

私のspring-security.xml:

 <security:http pattern="/static/**" security="none" />

    <security:http use-expressions="true" authentication-manager-ref="authenticationManager">
        <security:http-basic />
        <security:intercept-url pattern="/jsp/login*" access="permitAll" />
        <security:intercept-url pattern="/jsp/admin/**" access="isAuthenticated()" />
        <security:form-login
                login-page="/"
                default-target-url="/jsp/admin/admin.jsp"
                authentication-failure-url="/loginFailed"/>
        <security:logout logout-url="/logout" invalidate-session="true" delete-cookies="true" logout-success-url="/" />
        <security:anonymous username="guest" granted-authority="ROLE_ANONYMOUS"/>
        <security:remember-me key="sparkBitAuthToken" token-validity-seconds="864000" />
    </security:http>

    <security:authentication-manager alias="authenticationManager">
        <security:authentication-provider user-service-ref="userDetailsService">
            <security:password-encoder ref="encoder"/>
        </security:authentication-provider>
    </security:authentication-manager>

    <bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/> <!-- bCrypt encoder -->

    <bean id="userDetailsService" class="com.myproject.web.authentication.SparkBitUserDetailsService" />

私のloginController:

@Controller
@RequestMapping("/")
public class LoginController {

    @RequestMapping
    public String getLoginPage() {
        return "login";
    }

    @RequestMapping(value= "/loginFailed")
    public String getLoginPageOnError(Model model, @ModelAttribute("loginUser") LoginUserBean entity, BindingResult result, HttpServletRequest request) {
        result.rejectValue("login", "error.login.credentials", "Invalid credentials ...");
        return "login";
    }
    }

私のコントローラーには、入力されたフォームのデータがありません

また、JavaScriptをロードせずに無効な資格情報ページが更新されると、私は動けなくなります。何が間違っている可能性がありますか?

アドバイスありがとう

4

0 に答える 0