MemoryRealm
MemoryRealm 是一種對 Tomcat 的 Realm 接口的簡單演示實現,并不是針對生產環境而設計的。在啟動時,MemoryRealm 會從 XML 文檔中加載所有的用戶信息及其相關的角色信息(默認該文檔位于 $CATALINA_BASE/conf/tomcat-users.xml)。只有重啟 Tomcat 才能使對該文件作出的修改生效。
Realm 元素屬性
跟之前討論的一樣,為了配置 MemoryRealm,需要在 $CATALINA_BASE/conf/server.xml 中創建 元素。關于 MemoryRealm 中的屬性定義可參看 Realm 配置文檔。
用戶文件格式
用戶文件包含下列屬性。默認情況下,conf/tomcat-users.xml 必須是一個 XML 文件,并且帶有一個根元素:。每一個有效用戶都有一個內嵌在根元素中的 元素。
- name 用戶登錄所用的用戶名。
- password 用戶登錄所用的密碼。如果 元素中沒有設置 digest 屬性,則采用明文密碼,否則就設置為摘要式密碼,如之前討論的那樣。
- roles 以逗號分隔的用戶角色名列表。
特別注意事項
使用 MemoryRealm 需要注意以下規則:
- 當 Tomcat 首次啟動時,它會從用戶文件中加載所有已定義的用戶及其相關信息。假如對該用戶文件中的數據進行修改,則只有重啟 Tomcat 后才能生效。
- 當用戶首次訪問一個受保護資源時,Tomcat 會調用這一 Realm 的 authenticate() 方法。
- 一旦用戶認證成功,在登錄后,該用戶(及其相應角色)就將緩存在 Tomcat 中。(對于以表單形式的認證,這意味著直到會話超時或者無效才會過期;對于基本形式的驗證,意味著直到用戶關閉瀏覽器才會過期。)在會話序列化期間不會保存或重置緩存的用戶。對已認證用戶的數據庫信息進行的任何改動都不會生效,直到該用戶下次登錄。
- 應用負責管理users(用戶表)和user roles(用戶角色表)中的信息。Tomcat 沒有提供任何內置功能來維護這兩種表。