Package org.apache.shiro.web.mgt
Class CookieRememberMeManager
java.lang.Object
org.apache.shiro.mgt.AbstractRememberMeManager
org.apache.shiro.web.mgt.CookieRememberMeManager
- All Implemented Interfaces:
org.apache.shiro.mgt.RememberMeManager
Remembers a Subject's identity by saving the Subject's
Note that because this class subclasses the
principals to a Cookie
for later retrieval.
Cookie attributes (path, domain, maxAge, etc.) may be set on this class's default
cookie attribute, which acts as a template to use to set all properties of outgoing cookies
created by this implementation.
The default cookie has the following attribute values set:
| Attribute Name | Value |
|---|---|
name |
rememberMe |
path |
/ |
maxAge |
Cookie.ONE_YEAR |
AbstractRememberMeManager which already provides serialization
and encryption logic, this class utilizes both for added security before setting the cookie value.- Since:
- 1.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe default name of the underlying rememberMe cookie which isrememberMe. -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a newCookieRememberMeManagerwith a defaultrememberMecookie template.CookieRememberMeManager(Supplier<byte[]> keySupplier) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected StringensurePadding(String base64) Sometimes a user agent will send the rememberMe cookie value without padding, most likely because=is a separator in the cookie header.protected voidforgetIdentity(org.apache.shiro.subject.Subject subject) Removes the 'rememberMe' cookie from the associatedWebSubject's request/response pair.voidforgetIdentity(org.apache.shiro.subject.SubjectContext subjectContext) Removes the 'rememberMe' cookie from the associatedWebSubjectContext's request/response pair.Returns the cookie 'template' that will be used to set all attributes of outgoing rememberMe cookies created by thisRememberMeManager.protected byte[]getRememberedSerializedIdentity(org.apache.shiro.subject.SubjectContext subjectContext) Returns a previously serialized identity byte array ornullif the byte array could not be acquired.protected voidrememberSerializedIdentity(org.apache.shiro.subject.Subject subject, byte[] serialized) Base64-encodes the specified serialized byte array and sets that base64-encoded String as the cookie value.voidSets the cookie 'template' that will be used to set all attributes of outgoing rememberMe cookies created by thisRememberMeManager.Methods inherited from class org.apache.shiro.mgt.AbstractRememberMeManager
convertBytesToPrincipals, convertPrincipalsToBytes, decrypt, deserialize, encrypt, getCipherKey, getCipherService, getDecryptionCipherKey, getEncryptionCipherKey, getIdentityToRemember, getRememberedPrincipals, getSerializer, isRememberMe, onFailedLogin, onLogout, onRememberedPrincipalFailure, onSuccessfulLogin, rememberIdentity, rememberIdentity, serialize, setCipherKey, setCipherService, setDecryptionCipherKey, setEncryptionCipherKey, setSerializer
-
Field Details
-
DEFAULT_REMEMBER_ME_COOKIE_NAME
The default name of the underlying rememberMe cookie which isrememberMe.- See Also:
-
-
Constructor Details
-
CookieRememberMeManager
public CookieRememberMeManager()Constructs a newCookieRememberMeManagerwith a defaultrememberMecookie template. -
CookieRememberMeManager
Constructor. Pass keySupplier that supplies encryption key- Parameters:
keySupplier-- Since:
- 2.0
-
-
Method Details
-
getCookie
Returns the cookie 'template' that will be used to set all attributes of outgoing rememberMe cookies created by thisRememberMeManager. Outgoing cookies will match this one except for thevalueattribute, which is necessarily set dynamically at runtime. Please see the class-level JavaDoc for the default cookie's attribute values.- Returns:
- the cookie 'template' that will be used to set all attributes of outgoing rememberMe cookies created by
this
RememberMeManager.
-
setCookie
Sets the cookie 'template' that will be used to set all attributes of outgoing rememberMe cookies created by thisRememberMeManager. Outgoing cookies will match this one except for thevalueattribute, which is necessarily set dynamically at runtime. Please see the class-level JavaDoc for the default cookie's attribute values.- Parameters:
cookie- the cookie 'template' that will be used to set all attributes of outgoing rememberMe cookies created by thisRememberMeManager.
-
rememberSerializedIdentity
protected void rememberSerializedIdentity(org.apache.shiro.subject.Subject subject, byte[] serialized) Base64-encodes the specified serialized byte array and sets that base64-encoded String as the cookie value. Thesubjectinstance is expected to be aWebSubjectinstance with an HTTP Request/Response pair so an HTTP cookie can be set on the outgoing response. If it is not aWebSubjector thatWebSubjectdoes not have an HTTP Request/Response pair, this implementation does nothing.- Specified by:
rememberSerializedIdentityin classorg.apache.shiro.mgt.AbstractRememberMeManager- Parameters:
subject- the Subject for which the identity is being serialized.serialized- the serialized bytes to be persisted.
-
getRememberedSerializedIdentity
protected byte[] getRememberedSerializedIdentity(org.apache.shiro.subject.SubjectContext subjectContext) Returns a previously serialized identity byte array ornullif the byte array could not be acquired. This implementation retrieves an HTTP cookie, Base64-decodes the cookie value, and returns the resulting byte array. TheSubjectContextinstance is expected to be aWebSubjectContextinstance with an HTTP Request/Response pair so an HTTP cookie can be retrieved from the incoming request. If it is not aWebSubjectContextor thatWebSubjectContextdoes not have an HTTP Request/Response pair, this implementation returnsnull.- Specified by:
getRememberedSerializedIdentityin classorg.apache.shiro.mgt.AbstractRememberMeManager- Parameters:
subjectContext- the contextual data, usually provided by aSubject.Builderimplementation, that is being used to construct aSubjectinstance. To be used to assist with data lookup.- Returns:
- a previously serialized identity byte array or
nullif the byte array could not be acquired.
-
ensurePadding
Sometimes a user agent will send the rememberMe cookie value without padding, most likely because=is a separator in the cookie header. Contributed by Luis Arias. Thanks Luis!- Parameters:
base64- the base64 encoded String that may need to be padded- Returns:
- the base64 String padded if necessary.
-
forgetIdentity
Removes the 'rememberMe' cookie from the associatedWebSubject's request/response pair. Thesubjectinstance is expected to be aWebSubjectinstance with an HTTP Request/Response pair. If it is not aWebSubjector thatWebSubjectdoes not have an HTTP Request/Response pair, this implementation does nothing.- Specified by:
forgetIdentityin classorg.apache.shiro.mgt.AbstractRememberMeManager- Parameters:
subject- the subject instance for which identity data should be forgotten from the underlying persistence
-
forgetIdentity
Removes the 'rememberMe' cookie from the associatedWebSubjectContext's request/response pair. TheSubjectContextinstance is expected to be aWebSubjectContextinstance with an HTTP Request/Response pair. If it is not aWebSubjectContextor thatWebSubjectContextdoes not have an HTTP Request/Response pair, this implementation does nothing.- Parameters:
subjectContext- the contextual data, usually provided by aSubject.Builderimplementation
-