SEC-365: Provide an alwaysRemember property, together with an abstract method so subclasses can determine custom behaviour.
This commit is contained in:
parent
71eba94cf2
commit
f28ce39bde
|
@ -90,6 +90,7 @@ public class TokenBasedRememberMeServices implements RememberMeServices, Initial
|
||||||
private String parameter = DEFAULT_PARAMETER;
|
private String parameter = DEFAULT_PARAMETER;
|
||||||
private UserDetailsService userDetailsService;
|
private UserDetailsService userDetailsService;
|
||||||
private long tokenValiditySeconds = 1209600; // 14 days
|
private long tokenValiditySeconds = 1209600; // 14 days
|
||||||
|
private boolean alwaysRemember = false;
|
||||||
|
|
||||||
//~ Methods ========================================================================================================
|
//~ Methods ========================================================================================================
|
||||||
|
|
||||||
|
@ -238,10 +239,18 @@ public class TokenBasedRememberMeServices implements RememberMeServices, Initial
|
||||||
cancelCookie(request, response, "Interactive authentication attempt was unsuccessful");
|
cancelCookie(request, response, "Interactive authentication attempt was unsuccessful");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected boolean rememberMeRequested(HttpServletRequest request, String parameter) {
|
||||||
|
if (alwaysRemember) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return RequestUtils.getBooleanParameter(request, parameter, false);
|
||||||
|
}
|
||||||
|
|
||||||
public void loginSuccess(HttpServletRequest request, HttpServletResponse response,
|
public void loginSuccess(HttpServletRequest request, HttpServletResponse response,
|
||||||
Authentication successfulAuthentication) {
|
Authentication successfulAuthentication) {
|
||||||
// Exit if the principal hasn't asked to be remembered
|
// Exit if the principal hasn't asked to be remembered
|
||||||
if (!RequestUtils.getBooleanParameter(request, parameter, false)) {
|
if (!rememberMeRequested(request, parameter)) {
|
||||||
if (logger.isDebugEnabled()) {
|
if (logger.isDebugEnabled()) {
|
||||||
logger.debug("Did not send remember-me cookie (principal did not set parameter '" + this.parameter
|
logger.debug("Did not send remember-me cookie (principal did not set parameter '" + this.parameter
|
||||||
+ "')");
|
+ "')");
|
||||||
|
@ -322,4 +331,12 @@ public class TokenBasedRememberMeServices implements RememberMeServices, Initial
|
||||||
public void setUserDetailsService(UserDetailsService userDetailsService) {
|
public void setUserDetailsService(UserDetailsService userDetailsService) {
|
||||||
this.userDetailsService = userDetailsService;
|
this.userDetailsService = userDetailsService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isAlwaysRemember() {
|
||||||
|
return alwaysRemember;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAlwaysRemember(boolean alwaysRemember) {
|
||||||
|
this.alwaysRemember = alwaysRemember;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue