アプリケーションに認証機能を実装しています。資格情報が無効な場合、同じログイン ページに移動したいのですが、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をロードせずに無効な資格情報ページが更新されると、私は動けなくなります。何が間違っている可能性がありますか?
アドバイスありがとう