私はフレームワークの春と春のセキュリティを懇願しています。学ぶために、私はアプリを開発しています。これまで、ログインフォームを介してユーザーに検証するために、春のセキュリティなしでアプリを開発しました。ユーザーがユーザー名とパスワードを入力すると、私のアプリはコントローラーに行き、メソッド「post」に移動し、そこで ID (ユーザー名とパスワード) を検証します。Validator クラスを利用します。
セキュリティを強化するためにスプリングセキュリティを導入しましたが、ユーザーがID(ユーザー名とパスワード)を導入すると、メソッドへのリダイレクトがずっと取得されない場合、アプリはコントローラーのメソッドポストにリダイレクトしません
次はソースコードです
形式の jsp ファイルは次のとおりです。
...
<form:form name="f" commandName="usuario" action="j_spring_security_check" method="POST" >
<table align="center">
<tr>
<td><form:errors path="errorUsuario" cssClass="error"/></td>
</tr>
</table>
<table border="0" cellpadding="2" cellspacing="3">
<tbody>
<tr>
<td><span id="letra">Usuario</span></td>
<td><form:input path="nombreUsuario" name='j_username' id="fondo-gris"/></td>
<td><form:errors path="nombreUsuario" cssClass="error"/></td>
</tr>
<tr>
<td><span id="letra">Password</span></td>
<td><form:password path="clave" name='j_password' id="fondo-gris"/></td>
<td><form:errors path="clave" cssClass="error"/></td>
</tr>
<tr>
<td colspan="3"><center><input id="botonInciar" type="submit" name="guardar" value="Iniciar Sesión"/></center></td>
</tr>
</tbody>
</table>
</form:form>
...
このページのコントローラーは次のとおりです。
...
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String login(Model modelo) throws Exception {
logger.info("LogginController --> login: ha entrado en el método GET");
Usuario usuario = new Usuario();
modelo.addAttribute("usuario", usuario);
logger.info("LogginController --> login: los resultados del usuario son, userName: " + usuario.getNombreUsuario());
return "index";
}
/**
* Recoge los parámetros y redireccionamos donde necesitamos
* @param usuario El usuario que intenta acceder al sistema
* @param result Resultado del acceso
* @param status Estado de lasesión
* @return Retornamos la redirección a la página donde debe de ir tras la validación
*/
@RequestMapping(value = "/index", method = RequestMethod.POST)
public String processSubmitLogin(@ModelAttribute("usuario") Usuario usuario, BindingResult result, SessionStatus status) {
logger.info("LogginController --> processSubmitLogin: ha entrado en el método POST");
UsuarioLoggin ul = new UsuarioLoggin(usuario, usuarioService);
new LogginValidator().validate(ul, result);
if (result.hasErrors()) {
return "index";
} else {
status.setComplete();
return "redirect:/ok.htm";
}
}
...
spring-security の構成ファイルは次のとおりです。 securityApplicationContext.xml:
...
<security:http auto-config="true" use-expressions="true">
<security:intercept-url pattern="/index" access="permitAll"/>
<security:intercept-url pattern="/*" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>
<security:form-login login-page="/index"/>
</security:http>
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider>
<security:jdbc-user-service data-source-ref="dataSource"/>
</security:authentication-provider>
</security:authentication-manager>
...
PS: テストとテスト..jsp ファイルのラベル: "j_spring_security_check" を削除すると、アプリは今までどおりに検出されましたが、ユーザーがデータを送信するためにプッシュしたときにそのままにしておくと、アプリケーションはずっとコントローラーのメソッド「get」で
ありがとう。