Class PropertiesRealm
- All Implemented Interfaces:
Runnable,LogoutAware,Authorizer,PermissionResolverAware,RolePermissionResolverAware,org.apache.shiro.cache.CacheManagerAware,org.apache.shiro.lang.util.Destroyable,org.apache.shiro.lang.util.Initializable,org.apache.shiro.lang.util.Nameable,Realm
public class PropertiesRealm
extends TextConfigurationRealm
implements org.apache.shiro.lang.util.Destroyable, Runnable
A
TextConfigurationRealm that defers all logic to the parent class, but just enables
Properties based configuration in addition to the parent class's String configuration.
This class allows processing of a single .properties file for user, role, and
permission configuration.
The resourcePath MUST be set before this realm can be initialized. You
can specify any resource path supported by
ResourceUtils.getInputStreamForPath method.
The Properties format understood by this implementation must be written as follows:
Each line's key/value pair represents either a user-to-role(s) mapping or a role-to-permission(s)
mapping.
The user-to-role(s) lines have this format:
user.username = password,role1,role2,...
Note that each key is prefixed with the token user. Each value must adhere to the
the setUserDefinitions(String) JavaDoc.
The role-to-permission(s) lines have this format:
role.rolename = permissionDefinition1, permissionDefinition2, ...
where each key is prefixed with the token role. and the value adheres to the format specified in
the setRoleDefinitions(String) JavaDoc.
Here is an example of a very simple properties definition that conforms to the above format rules and corresponding
method JavaDocs:
user.root = rootPassword,administrator
user.jsmith = jsmithPassword,manager,engineer,employee
user.abrown = abrownPassword,qa,employee
user.djones = djonesPassword,qa,contractor
role.administrator = *
role.manager = "user:read,write", file:execute:/usr/local/emailManagers.sh
role.engineer = "file:read,execute:/usr/local/tomcat/bin/startup.sh"
role.employee = application:use:wiki
role.qa = "server:view,start,shutdown,restart:someQaServer", server:view:someProductionServer
role.contractor = application:use:timesheet- Since:
- 0.2
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected longprotected intprotected Stringprotected ExecutorServiceprotected booleanFields inherited from class org.apache.shiro.realm.SimpleAccountRealm
roles, rolesLock, users, usersLock -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidvoiddestroy()Destroy reload scheduler if one exists.protected Stringprotected StringgetRolename(String key) protected StringgetUsername(String key) protected booleanisRolename(String key) protected booleanisUsername(String key) voidonInit()Will call 'processDefinitions' on startup.voidrun()voidsetReloadIntervalSeconds(int reloadIntervalSeconds) Sets the interval in seconds at which the property file will be checked for changes and reloaded.voidsetResourcePath(String resourcePath) Sets the path of the properties file to load user, role, and permission information from.voidsetUseXmlFormat(boolean useXmlFormat) Determines whether or not the properties XML format should be used.protected voidMethods inherited from class org.apache.shiro.realm.text.TextConfigurationRealm
getRoleDefinitions, getUserDefinitions, processDefinitions, processRoleDefinitions, processRoleDefinitions, processUserDefinitions, processUserDefinitions, setRoleDefinitions, setUserDefinitions, toLines, toMapMethods inherited from class org.apache.shiro.realm.SimpleAccountRealm
accountExists, add, add, addAccount, addAccount, addRole, doGetAuthenticationInfo, doGetAuthorizationInfo, getRole, getUser, getUsername, getUsername, roleExists, toSetMethods inherited from class org.apache.shiro.realm.AuthorizingRealm
afterCacheManagerSet, checkPermission, checkPermission, checkPermission, checkPermissions, checkPermissions, checkPermissions, checkRole, checkRole, checkRoles, checkRoles, checkRoles, clearCachedAuthorizationInfo, doClearCache, getAuthorizationCache, getAuthorizationCacheKey, getAuthorizationCacheName, getAuthorizationInfo, getPermissionResolver, getPermissions, getRolePermissionResolver, hasAllRoles, hasRole, hasRole, hasRoles, hasRoles, isAuthorizationCachingEnabled, isPermitted, isPermitted, isPermitted, isPermitted, isPermitted, isPermitted, isPermittedAll, isPermittedAll, isPermittedAll, setAuthorizationCache, setAuthorizationCacheName, setAuthorizationCachingEnabled, setName, setPermissionResolver, setRolePermissionResolverMethods inherited from class org.apache.shiro.realm.AuthenticatingRealm
assertCredentialsMatch, clearCachedAuthenticationInfo, getAuthenticationCache, getAuthenticationCacheKey, getAuthenticationCacheKey, getAuthenticationCacheName, getAuthenticationInfo, getAuthenticationTokenClass, getCredentialsMatcher, init, isAuthenticationCachingEnabled, isAuthenticationCachingEnabled, setAuthenticationCache, setAuthenticationCacheName, setAuthenticationCachingEnabled, setAuthenticationTokenClass, setCredentialsMatcher, supportsMethods inherited from class org.apache.shiro.realm.CachingRealm
clearCache, getAvailablePrincipal, getCacheManager, getName, isCachingEnabled, onLogout, setCacheManager, setCachingEnabledMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.shiro.lang.util.Initializable
init
-
Field Details
-
scheduler
-
useXmlFormat
-
resourcePath
-
fileLastModified
-
reloadIntervalSeconds
-
-
Constructor Details
-
PropertiesRealm
public PropertiesRealm()
-
-
Method Details
-
setUseXmlFormat
Determines whether or not the properties XML format should be used. For more information, seeProperties.loadFromXML(java.io.InputStream)- Parameters:
useXmlFormat- true to use XML or false to use the normal format. Defaults to false.
-
setResourcePath
Sets the path of the properties file to load user, role, and permission information from. The properties file will be loaded usingResourceUtils.getInputStreamForPath(String)so any convention recognized by that method is accepted here. For example, to load a file from the classpath useclasspath:myfile.properties; to load a file from disk simply specify the full path; to load a file from a URL useurl:www.mysite.com/myfile.properties.- Parameters:
resourcePath- the path to load the properties file from. This is a required property.
-
setReloadIntervalSeconds
Sets the interval in seconds at which the property file will be checked for changes and reloaded. If this is set to zero or less, property file reloading will be disabled. If it is set to 1 or greater, then a separate thread will be created to monitor the property file for changes and reload the file if it is updated.- Parameters:
reloadIntervalSeconds- the interval in seconds at which the property file should be examined for changes. If set to zero or less, reloading is disabled.
-
onInit
Description copied from class:TextConfigurationRealmWill call 'processDefinitions' on startup.- Overrides:
onInitin classTextConfigurationRealm- See Also:
-
afterRoleCacheSet
-
destroy
Destroy reload scheduler if one exists.- Specified by:
destroyin interfaceorg.apache.shiro.lang.util.Destroyable
-
startReloadThread
-
run
-
getName
-
isUsername
-
isRolename
-
getUsername
-
getRolename
-