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