|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.springframework.dao.support.DaoSupport
org.springframework.jdbc.core.support.JdbcDaoSupport
org.acegisecurity.userdetails.jdbc.JdbcDaoImpl
public class JdbcDaoImpl
Retrieves user details (username, password, enabled flag, and authorities) from a JDBC location.
A default database structure is assumed, (see DEF_USERS_BY_USERNAME_QUERY and DEF_AUTHORITIES_BY_USERNAME_QUERY, which most users of this class will
need to override, if using an existing scheme. This may be done by setting
the default query strings used. If this does not provide enough
flexibility, another strategy would be to subclass this class and override
the MappingSqlQuery instances used, via the initMappingSqlQueries() extension point.
In order to minimise backward compatibility issues, this DAO does not recognise the expiration of user accounts or the expiration of user credentials. However, it does recognise and honour the user enabled/disabled column.
| Nested Class Summary | |
|---|---|
protected class |
JdbcDaoImpl.AuthoritiesByUsernameMapping
Query object to look up a user's authorities. |
protected class |
JdbcDaoImpl.UsersByUsernameMapping
Query object to look up a user. |
| Field Summary | |
|---|---|
protected MappingSqlQuery |
authoritiesByUsernameMapping
|
static String |
DEF_AUTHORITIES_BY_USERNAME_QUERY
|
static String |
DEF_USERS_BY_USERNAME_QUERY
|
protected MappingSqlQuery |
usersByUsernameMapping
|
| Constructor Summary | |
|---|---|
JdbcDaoImpl()
|
|
| Method Summary | |
|---|---|
protected void |
addCustomAuthorities(String username,
List authorities)
Allows subclasses to add their own granted authorities to the list to be returned in the User. |
String |
getAuthoritiesByUsernameQuery()
|
String |
getRolePrefix()
|
String |
getUsersByUsernameQuery()
|
protected void |
initDao()
|
protected void |
initMappingSqlQueries()
Extension point to allow other MappingSqlQuery objects to be substituted in a subclass |
boolean |
isUsernameBasedPrimaryKey()
|
UserDetails |
loadUserByUsername(String username)
Locates the user based on the username. |
void |
setAuthoritiesByUsernameQuery(String queryString)
Allows the default query string used to retrieve authorities based on username to be overriden, if default table or column names need to be changed. |
void |
setRolePrefix(String rolePrefix)
Allows a default role prefix to be specified. |
void |
setUsernameBasedPrimaryKey(boolean usernameBasedPrimaryKey)
If true (the default), indicates the #getUsersByUsernameMapping() returns a username in response to a
query. |
void |
setUsersByUsernameQuery(String usersByUsernameQueryString)
Allows the default query string used to retrieve users based on username to be overriden, if default table or column names need to be changed. |
| Methods inherited from class org.springframework.jdbc.core.support.JdbcDaoSupport |
|---|
checkDaoConfig, closeConnectionIfNecessary, createJdbcTemplate, getConnection, getDataSource, getExceptionTranslator, getJdbcTemplate, releaseConnection, setDataSource, setJdbcTemplate |
| Methods inherited from class org.springframework.dao.support.DaoSupport |
|---|
afterPropertiesSet |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final String DEF_USERS_BY_USERNAME_QUERY
public static final String DEF_AUTHORITIES_BY_USERNAME_QUERY
protected MappingSqlQuery authoritiesByUsernameMapping
protected MappingSqlQuery usersByUsernameMapping
| Constructor Detail |
|---|
public JdbcDaoImpl()
| Method Detail |
|---|
public void setAuthoritiesByUsernameQuery(String queryString)
DEF_AUTHORITIES_BY_USERNAME_QUERY; when modifying this query, ensure
that all returned columns are mapped back to the same column names as
in the default query.
queryString - The query string to setpublic String getAuthoritiesByUsernameQuery()
public void setRolePrefix(String rolePrefix)
ROLE_ prefix expected to exist in role names (by default)
by some other Acegi Security framework classes, in the case that the
prefix is not already present in the db.
rolePrefix - the new prefixpublic String getRolePrefix()
public void setUsernameBasedPrimaryKey(boolean usernameBasedPrimaryKey)
true (the default), indicates the #getUsersByUsernameMapping() returns a username in response to a
query. If false, indicates that a primary key is used
instead. If set to true, the class will use the
database-derived username in the returned UserDetails. If
false, the class will use the loadUserByUsername(String) derived username in the returned
UserDetails.
usernameBasedPrimaryKey - true if the mapping queries
return the username String, or false
if the mapping returns a database primary key.public boolean isUsernameBasedPrimaryKey()
public void setUsersByUsernameQuery(String usersByUsernameQueryString)
DEF_USERS_BY_USERNAME_QUERY; when
modifying this query, ensure that all returned columns are mapped back
to the same column names as in the default query. If the 'enabled'
column does not exist in the source db, a permanent true value for this
column may be returned by using a query similar to "SELECT username,password,'true' as enabled FROM users WHERE username = ?"
usersByUsernameQueryString - The query string to setpublic String getUsersByUsernameQuery()
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException,
DataAccessException
UserDetailsServiceUserDetails object that comes back may have a
username that is of a different case than what was actually requested..
loadUserByUsername in interface UserDetailsServiceusername - the username presented to the DaoAuthenticationProvider
null)
UsernameNotFoundException - if the user could not be found or the
user has no GrantedAuthority
DataAccessException - if user could not be found for a
repository-specific reason
protected void addCustomAuthorities(String username,
List authorities)
User.
username - the username, for use by finder methodsauthorities - the current granted authorities, as populated from
the authoritiesByUsername mapping
protected void initDao()
throws ApplicationContextException
initDao in class DaoSupportApplicationContextExceptionprotected void initMappingSqlQueries()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||