|
Spring Security Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.dao.support.DaoSupport org.springframework.jdbc.core.support.JdbcDaoSupport org.springframework.security.userdetails.jdbc.JdbcDaoImpl
public class JdbcDaoImpl
UserDetailsServiceRetrieves implementation which retrieves the user details (username, password, enabled flag, and authorities) from a database using JDBC queries.
Column |
---|
username |
password |
enabled |
Column |
---|
username |
authority |
DEF_USERS_BY_USERNAME_QUERY
and DEF_AUTHORITIES_BY_USERNAME_QUERY
).
In order to minimise backward compatibility issues, this implementation doesn't recognise the expiration of user accounts or the expiration of user credentials. However, it does recognise and honour the user enabled/disabled column. This should map to a boolean type in the result set (the SQL type will depend on the database you are using). All the other columns map to Strings.
When groups are being used, the tables "groups", "group_members" and "group_authorities" are used. See
DEF_GROUP_AUTHORITIES_BY_USERNAME_QUERY
for the default query which is used to load the group authorities.
Again you can customize this by setting the groupAuthoritiesByUsernameQuery property, but the format of
the rows returned should match the default.
Field Summary | |
---|---|
static String |
DEF_AUTHORITIES_BY_USERNAME_QUERY
|
static String |
DEF_GROUP_AUTHORITIES_BY_USERNAME_QUERY
|
static String |
DEF_USERS_BY_USERNAME_QUERY
|
protected MessageSourceAccessor |
messages
|
Fields inherited from class org.springframework.dao.support.DaoSupport |
---|
logger |
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 . |
protected UserDetails |
createUserDetails(String username,
UserDetails userFromUserQuery,
GrantedAuthority[] combinedAuthorities)
Can be overridden to customize the creation of the final UserDetailsObject returnd from loadUserByUsername. |
protected String |
getAuthoritiesByUsernameQuery()
|
protected boolean |
getEnableAuthorities()
|
protected boolean |
getEnableGroups()
|
protected String |
getRolePrefix()
|
String |
getUsersByUsernameQuery()
|
protected void |
initDao()
|
protected boolean |
isUsernameBasedPrimaryKey()
|
protected List |
loadGroupAuthorities(String username)
|
protected List |
loadUserAuthorities(String username)
Loads authorities by executing the authoritiesByUsernameQuery. |
UserDetails |
loadUserByUsername(String username)
Locates the user based on the username. |
protected List |
loadUsersByUsername(String username)
Executes the usersByUsernameQuery and returns a list of UserDetails objects (there should normally only be one matching user). |
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 |
setEnableAuthorities(boolean enableAuthorities)
Enables loading of authorities (roles) from the authorities table. |
void |
setEnableGroups(boolean enableGroups)
Enables support for group authorities. |
void |
setGroupAuthoritiesByUsernameQuery(String queryString)
Allows the default query string used to retrieve group 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 getUsersByUsernameQuery() 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, createJdbcTemplate, getConnection, getDataSource, getExceptionTranslator, getJdbcTemplate, initTemplateConfig, 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
public static final String DEF_GROUP_AUTHORITIES_BY_USERNAME_QUERY
protected MessageSourceAccessor messages
Constructor Detail |
---|
public JdbcDaoImpl()
Method Detail |
---|
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
mappingpublic String getUsersByUsernameQuery()
protected void initDao() throws ApplicationContextException
initDao
in class DaoSupport
ApplicationContextException
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException
UserDetailsService
UserDetails
object that comes back may have a username that is of a different case than what was
actually requested..
loadUserByUsername
in interface UserDetailsService
username
- 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 reasonprotected List loadUsersByUsername(String username)
protected List loadUserAuthorities(String username)
protected List loadGroupAuthorities(String username)
protected UserDetails createUserDetails(String username, UserDetails userFromUserQuery, GrantedAuthority[] combinedAuthorities)
username
- the name originally passed to loadUserByUsernameuserFromUserQuery
- the object returned from the execution of thecombinedAuthorities
- the combined array of authorities from all the authority loading queries.
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 setprotected String getAuthoritiesByUsernameQuery()
public void setGroupAuthoritiesByUsernameQuery(String queryString)
DEF_GROUP_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 void setRolePrefix(String rolePrefix)
rolePrefix
- the new prefixprotected String getRolePrefix()
public void setUsernameBasedPrimaryKey(boolean usernameBasedPrimaryKey)
true
(the default), indicates the getUsersByUsernameQuery()
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.protected 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 setprotected boolean getEnableAuthorities()
public void setEnableAuthorities(boolean enableAuthorities)
protected boolean getEnableGroups()
public void setEnableGroups(boolean enableGroups)
enableGroups
-
|
Spring Security Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |