MemoryRealm 是一种对 Tomcat 的 Realm 接口的简单演示实现,并不是针对生产环境而设计的。在启动时,MemoryRealm 会从 XML 文档中加载所有的用户信息及其相关的角色信息(默认该文档位于$CATALINA_BASE/conf/tomcat-users.xml
)。只有重启 Tomcat 才能使对该文件作出的修改生效。
Realm 元素属性
为了配置 MemoryRealm,需要在 $CATALINA_BASE/conf/server.xml
中创建 <Realm>
元素。
用户文件格式
用户文件包含下列属性。默认情况下,conf/tomcat-users.xml
必须是一个 XML 文件,并且带有一个根元素:<tomcat-users>
。每一个有效用户都有一个内嵌在根元素中的 <user>
元素。
-
name 用户登录所用的用户名。
-
password 用户登录所用的密码。如果
<Realm>
元素中没有设置 digest
属性,则采用明文密码,否则就设置为摘要式密码。
-
roles 以逗号分隔的用户角色名列表。
特别注意事项
使用 MemoryRealm 需要注意以下规则:
-
当 Tomcat 首次启动时,它会从用户文件中加载所有已定义的用户及其相关信息。假如对该用户文件中的数据进行修改,则只有重启 Tomcat 后才能生效。
-
当用户首次访问一个受保护资源时,Tomcat 会调用这一
Realm
的 authenticate()
方法。
-
一旦用户认证成功,在登录后,该用户(及其相应角色)就将缓存在 Tomcat 中。(对于以表单形式的认证,这意味着直到会话超时或者无效才会过期;对于基本形式的验证,意味着直到用户关闭浏览器才会过期。)在会话序列化期间不会保存或重置缓存的用户。对已认证用户的数据库信息进行的任何改动都不会生效,直到该用户下次登录。
-
应用负责管理users(用户表)和user roles(用户角色表)中的信息。Tomcat 没有提供任何内置功能来维护这两种表。