mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-07-15 14:53:31 +00:00
Remove Sql query objects from JdbcTokenRepositoryImpl in favour of direct JdbcTemplate use.
This commit is contained in:
parent
89fa771093
commit
8440743108
@ -2,6 +2,7 @@ package org.springframework.security.web.authentication.rememberme;
|
|||||||
|
|
||||||
import org.springframework.dao.DataAccessException;
|
import org.springframework.dao.DataAccessException;
|
||||||
import org.springframework.dao.IncorrectResultSizeDataAccessException;
|
import org.springframework.dao.IncorrectResultSizeDataAccessException;
|
||||||
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
import org.springframework.jdbc.core.SqlParameter;
|
import org.springframework.jdbc.core.SqlParameter;
|
||||||
import org.springframework.jdbc.core.support.JdbcDaoSupport;
|
import org.springframework.jdbc.core.support.JdbcDaoSupport;
|
||||||
import org.springframework.jdbc.object.MappingSqlQuery;
|
import org.springframework.jdbc.object.MappingSqlQuery;
|
||||||
@ -11,7 +12,7 @@ import javax.sql.DataSource;
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Types;
|
import java.sql.Types;
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JDBC based persistent login token repository implementation.
|
* JDBC based persistent login token repository implementation.
|
||||||
@ -47,28 +48,19 @@ public class JdbcTokenRepositoryImpl extends JdbcDaoSupport implements Persisten
|
|||||||
private String removeUserTokensSql = DEF_REMOVE_USER_TOKENS_SQL;
|
private String removeUserTokensSql = DEF_REMOVE_USER_TOKENS_SQL;
|
||||||
private boolean createTableOnStartup;
|
private boolean createTableOnStartup;
|
||||||
|
|
||||||
private MappingSqlQuery<PersistentRememberMeToken> tokensBySeriesMapping;
|
|
||||||
private SqlUpdate insertToken;
|
|
||||||
private SqlUpdate updateToken;
|
|
||||||
private SqlUpdate removeUserTokens;
|
|
||||||
|
|
||||||
protected void initDao() {
|
protected void initDao() {
|
||||||
tokensBySeriesMapping = new TokensBySeriesMapping(getDataSource());
|
|
||||||
insertToken = new InsertToken(getDataSource());
|
|
||||||
updateToken = new UpdateToken(getDataSource());
|
|
||||||
removeUserTokens = new RemoveUserTokens(getDataSource());
|
|
||||||
|
|
||||||
if (createTableOnStartup) {
|
if (createTableOnStartup) {
|
||||||
getJdbcTemplate().execute(CREATE_TABLE_SQL);
|
getJdbcTemplate().execute(CREATE_TABLE_SQL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createNewToken(PersistentRememberMeToken token) {
|
public void createNewToken(PersistentRememberMeToken token) {
|
||||||
insertToken.update(token.getUsername(), token.getSeries(), token.getTokenValue(), token.getDate());
|
getJdbcTemplate().update(insertTokenSql, token.getUsername(), token.getSeries(),
|
||||||
|
token.getTokenValue(), token.getDate());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateToken(String series, String tokenValue, Date lastUsed) {
|
public void updateToken(String series, String tokenValue, Date lastUsed) {
|
||||||
updateToken.update(tokenValue, new Date(), series);
|
getJdbcTemplate().update(updateTokenSql, tokenValue, new Date(), series);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -82,7 +74,11 @@ public class JdbcTokenRepositoryImpl extends JdbcDaoSupport implements Persisten
|
|||||||
*/
|
*/
|
||||||
public PersistentRememberMeToken getTokenForSeries(String seriesId) {
|
public PersistentRememberMeToken getTokenForSeries(String seriesId) {
|
||||||
try {
|
try {
|
||||||
return tokensBySeriesMapping.findObject(seriesId);
|
return getJdbcTemplate().queryForObject(tokensBySeriesSql, new RowMapper<PersistentRememberMeToken>() {
|
||||||
|
public PersistentRememberMeToken mapRow(ResultSet rs, int rowNum) throws SQLException {
|
||||||
|
return new PersistentRememberMeToken(rs.getString(1), rs.getString(2), rs.getString(3), rs.getTimestamp(4));
|
||||||
|
}
|
||||||
|
}, seriesId);
|
||||||
} catch(IncorrectResultSizeDataAccessException moreThanOne) {
|
} catch(IncorrectResultSizeDataAccessException moreThanOne) {
|
||||||
logger.error("Querying token for series '" + seriesId + "' returned more than one value. Series" +
|
logger.error("Querying token for series '" + seriesId + "' returned more than one value. Series" +
|
||||||
" should be unique");
|
" should be unique");
|
||||||
@ -94,7 +90,7 @@ public class JdbcTokenRepositoryImpl extends JdbcDaoSupport implements Persisten
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void removeUserTokens(String username) {
|
public void removeUserTokens(String username) {
|
||||||
removeUserTokens.update(username);
|
getJdbcTemplate().update(removeUserTokensSql, username);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -106,50 +102,4 @@ public class JdbcTokenRepositoryImpl extends JdbcDaoSupport implements Persisten
|
|||||||
public void setCreateTableOnStartup(boolean createTableOnStartup) {
|
public void setCreateTableOnStartup(boolean createTableOnStartup) {
|
||||||
this.createTableOnStartup = createTableOnStartup;
|
this.createTableOnStartup = createTableOnStartup;
|
||||||
}
|
}
|
||||||
|
|
||||||
//~ Inner Classes ==================================================================================================
|
|
||||||
|
|
||||||
private class TokensBySeriesMapping extends MappingSqlQuery<PersistentRememberMeToken> {
|
|
||||||
protected TokensBySeriesMapping(DataSource ds) {
|
|
||||||
super(ds, tokensBySeriesSql);
|
|
||||||
declareParameter(new SqlParameter(Types.VARCHAR));
|
|
||||||
compile();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected PersistentRememberMeToken mapRow(ResultSet rs, int rowNum) throws SQLException {
|
|
||||||
return new PersistentRememberMeToken(rs.getString(1), rs.getString(2), rs.getString(3), rs.getTimestamp(4));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class UpdateToken extends SqlUpdate {
|
|
||||||
|
|
||||||
public UpdateToken(DataSource ds) {
|
|
||||||
super(ds, updateTokenSql);
|
|
||||||
setMaxRowsAffected(1);
|
|
||||||
declareParameter(new SqlParameter(Types.VARCHAR));
|
|
||||||
declareParameter(new SqlParameter(Types.TIMESTAMP));
|
|
||||||
declareParameter(new SqlParameter(Types.VARCHAR));
|
|
||||||
compile();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class InsertToken extends SqlUpdate {
|
|
||||||
|
|
||||||
public InsertToken(DataSource ds) {
|
|
||||||
super(ds, insertTokenSql);
|
|
||||||
declareParameter(new SqlParameter(Types.VARCHAR));
|
|
||||||
declareParameter(new SqlParameter(Types.VARCHAR));
|
|
||||||
declareParameter(new SqlParameter(Types.VARCHAR));
|
|
||||||
declareParameter(new SqlParameter(Types.TIMESTAMP));
|
|
||||||
compile();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class RemoveUserTokens extends SqlUpdate {
|
|
||||||
public RemoveUserTokens(DataSource ds) {
|
|
||||||
super(ds, removeUserTokensSql);
|
|
||||||
declareParameter(new SqlParameter(Types.VARCHAR));
|
|
||||||
compile();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user