Package org.springframework.security.core.userdetails

# Interface UserCache

All Known Implementing Classes:
  `NullUserCache`, `SpringCacheBasedUserCache`

public interface UserCache
Provides a cache of `UserDetails` objects.

Implementations should provide appropriate methods to set their cache parameters (e.g. time-to-live) and/or force removal of entities before their normal expiration. These are not part of the `UserCache` interface contract because they vary depending on the type of caching system used (in-memory, disk, cluster, hybrid etc.).

Caching is generally only required in applications which do not maintain server-side state, such as remote clients or web services. The authentication credentials are then presented on each invocation and the overhead of accessing a database or other persistent storage mechanism to validate would be excessive. In this case, you would configure a cache to store the `UserDetails` information rather than loading it each time.

See Also:
  - `AbstractUserDetailsAuthenticationProvider`

## Method Summary

Modifier and Type
Method
Description
`UserDetails`
`getUserFromCache(String username)`
Obtains a `UserDetails` from the cache.
`void`
`putUserInCache(UserDetails user)`
Places a `UserDetails` in the cache.
`void`
`removeUserFromCache(String username)`
Removes the specified user from the cache.

## Method Details

### getUserFromCache

UserDetails getUserFromCache(String username)
Obtains a `UserDetails` from the cache.

Parameters:
  `username` - the `User.getUsername()` used to place the user in the cache
Returns:
  the populated `UserDetails` or `null` if the user could not be found or if the cache entry has expired

### putUserInCache

void putUserInCache(UserDetails user)
Places a `UserDetails` in the cache. The `username` is the key used to subsequently retrieve the `UserDetails`.

Parameters:
  `user` - the fully populated `UserDetails` to place in the cache

### removeUserFromCache

void removeUserFromCache(String username)
Removes the specified user from the cache. The `username` is the key used to remove the user. If the user is not found, the method should simply return (not thrown an exception).

Some cache implementations may not support eviction from the cache, in which case they should provide appropriate behaviour to alter the user in either its documentation, via an exception, or through a log message.

Parameters:
  `username` - to be evicted from the cache