如何在登录页面中获取复选框的值?
在我的Jsp中,我有一个记住我的复选框。
<form:form action="${pageContext.request.contextPath}/amPostLogin" method="POST" modelAttribute="userLogin">
<form:input type="text" path="username" id="username" placeholder="username"required="required" autofocus="autofocus"/>
<form:input type="password" path="password" id="password" placeholder="password" required="required"/>
<br><form:checkbox label="Remember Me" path="isRemember" />
<br><form:checkbox label="Auto Login" path="isAutoLogin"/>
<form:button class="login-button" >Login</form:button>
</form:form>
在我的Spring Security中,我有:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/am*")
.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/login_AM")
.loginProcessingUrl("/amPostLogin")
.failureUrl("/login_AM?error=true")
.defaultSuccessUrl("/amChatPage")
.and()
.logout()
.logoutUrl("/amLogout")
.logoutSuccessUrl("/logoutSuccessful_AM")
.and()
.exceptionHandling()
.accessDeniedPage("/am403")
.and().httpBasic()
.and().csrf().disable();
}
现在我想在控制器中获取AutoLogin和RememberMe的值。 我该怎么做?
我尝试为“/ amPostLogin”创建一个控制器但由于某种原因它没有进入控制器。如何在控制器中获取这些复选框的值?请有人帮助我。谢谢。
ANSWER
我没有在控制器中获取checkbox的值,而是创建了一个AuthenticationSuccessHandler并在那里获取值。
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
boolean isRemember = Boolean.parseBoolean(request.getParameter("isRemember"));
boolean isAutoLogin = Boolean.parseBoolean(request.getParameter("isAutoLogin"));
response.setStatus(HttpServletResponse.SC_OK);
response.sendRedirect("amChatPage");
}
答案 0 :(得分:0)
如果您使用的是spring mvc,那么您的登录jsp需要进行一些更改。 1)您的登录页面操作应映射到j_spring_security_check.htm,Spring的UsernamePasswordAuthenticationFilter.java拦截此URL进行身份验证。 2)你的用户名和密码应映射到j_username和j_password,这个上面的过滤器要求设置这些字段,你可以查看源代码。 3)您还需要在context.xml中提供身份验证提供程序 4)您需要定义lgtAuthenticationFailureHandler和lgtAuthenticationsuccessHandler。从lgtAuthenticationsuccessHandler您可以直接到您的申请主页。
这是登录部分。您可以在春季推荐许多网站进行登录验证。
对于cookie部分,
你可以做的就是点击“记住我”复选框,你可以编写一个javascript,它会创建一个记住我的cookie,其中包含用户名和所有其他参数,如expiry n all。
当下次加载页面时,您可以编写一个onload javascript funtion,在那里您可以检查是否记住我存在cookie并且基于您可以填充用户名并勾选您记住我的复选框。
这是我实施的方式,所以你可以试试这个。