我乞求框架弹簧和弹簧安全。为了学习,我正在开发一个应用程序。到目前为止,我已经开发了没有 spring-security 的应用程序,以通过登录表单向用户验证。当用户介绍您的用户名和密码时,我的应用程序进入控制器,方法“发布”并且在那里我验证您的 ID(用户名和密码),我使用 Validator 类
现在我已经介绍了 spring-security 以获得更多安全性,但是当用户介绍您的 ids(用户名和密码)时,如果没有重定向到方法获取,应用程序永远不会重定向到控制器的方法发布
接下来是源代码
表单的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”方法中
谢谢。