- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个简单的 Java Web 应用程序,登录用户不超过 20-25 个。我目前使用 tomcat 服务器托管它,并使用 UderDatabaseRealm 进行访问控制。我想向该应用程序添加一项功能,其中管理员可以通过应用程序本身将用户添加到系统中。我想知道是否可以通过编程方式将用户添加到此文件。我能想到的一种方法是在我的应用程序中打开 tomcat_users.xml 文件并进行 XML 操作以添加用户。还有比这更好的方法吗?
我的领域在 servers.xml 中配置为:-
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
My tomcat_users.xml file is as follows:-
<tomcat-users>
<role rolename="admin"/>
<role rolename="local"/>
<user username="tomcat" password="tomcat" roles="admin"/>
</tomcat-users>
最佳答案
您可以使用 JNDI 从运行中的 tomcat 获取 UserDatabase 对象,其中包含有关您的用户和角色的所有信息。您必须在 server.xml 中将 UserDatabase 定义为全局资源,并将资源链接添加到您的 context.xml 文件中,如下所示:
服务器.xml
<GlobalNamingResources>
<Resource auth="Container" description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase"
pathname="/home/user/tomcat-users.xml" type="org.apache.catalina.UserDatabase"
readonly="false" />
</GlobalNamingResources>
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
你的 webapp 的 context.xml
<Context>
<ResourceLink name="UserDatabase" global="UserDatabase"
type="org.apache.catalina.UserDatabase" />
</Context>
现在您可以使用 InitialContext 获取 UserDatabase 对象:
UserDatabase ud = (UserDatabase) new InitialContext().lookup("java:comp/env/UserDatabase");
现在你可以调用这个数据库的方法了:
ud.createUser("username", "password", "fullname");
不要忘记调用 ud.save();
方法,以便将更改写入 xml 文件。为了保存这个,全局资源的 readonly 属性必须是 false。
关于java - 如何以编程方式将用户添加到 tomcat UserDatabaseRealm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26761721/
我有一个简单的 Java Web 应用程序,登录用户不超过 20-25 个。我目前使用 tomcat 服务器托管它,并使用 UderDatabaseRealm 进行访问控制。我想向该应用程序添加一项功
我已经在 tomcat server.xml 的引擎标签下配置了 JDBCRealm,但是 tomcat 坚持使用 UserDatabaseRealm。 server.xml -->
在同一台服务器上,我需要部署同一个 webapp 的两个版本(一个用于生产,另一个用于验证)。 这两个 webapps 使用不同的数据库进行身份验证。我正在努力为这两个应用程序实现两个不同的上下文。
我正在尝试为我的 Web 应用程序(JSF 2.1 + 休眠)设置容器管理安全 Realm 。我注意到 Tomcat 7 一次只能使用一种类型的 Realm 。 要在 netbeans (7.0) 中
我正在将 Spring 安全性添加到内部网站。我被要求将身份验证绑定(bind)到 tomcat-users.xml,这样我们就可以减少要更改/记住的密码数量。 根据我在 Google 上搜索到的内容
我是一名优秀的程序员,十分优秀!