如何在不更改tomcat-users.xml的情况下为静态tomcat Web应用程序提供基本http身份验证?
我可以访问tomcat管理器并可以上传war文件。其中一个war是静态web项目(压缩html+媒体文件,重命名为*.war)。我想在这个war中添加一个Web INF/Web.xml文件,用基本的http身份验证来保护内容 我知道如何通过在如何在不更改tomcat-users.xml的情况下为静态tomcat Web应用程序提供基本http身份验证?,tomcat,web.xml,http-authentication,Tomcat,Web.xml,Http Authentication,我可以访问tomcat管理器并可以上传war文件。其中一个war是静态web项目(压缩html+媒体文件,重命名为*.war)。我想在这个war中添加一个Web INF/Web.xml文件,用基本的http身份验证来保护内容 我知道如何通过在tomcat users.xml中添加全局用户和分配角色来实现这一点,但我希望在war文件中定义所有用户名和密码 这可以在不接触tomcat的tomcat users.xml的情况下完成吗 如果是,我如何在静态项目的web.xml中指定它 Thx,尤文我在这
tomcat users.xml
中添加全局用户和分配角色来实现这一点,但我希望在war文件中定义所有用户名和密码
tomcat users.xml的情况下完成吗
web.xml
中指定它META-INF/context.xml
指向自己的WEB-INF/users.xml
。不幸的是,指向users.xml文件的链接必须是绝对的,我不想对配置文件中的OS/文件系统路径做出任何假设
这是我当前的WEB-INF/WEB.xml
:
过冷器
多么棒的应用程序!
经理
关键用户
整个应用程序
/*
关键用户
经理
基本的
评价区
匹配的META-INF/context.xml
如下所示:
如果您知道tomcat放置所有已部署应用程序的目录,您可以使用相对路径(因为它们是根据catalina.base env.variable解析的,即tomcat home) 例如,如果您使用eclipse IDE进行部署,则应用程序通常部署在wtpwebapps中,因此您可以使用:
<Realm className="org.apache.catalina.realm.MemoryRealm"
pathname="wtpwebapps/YOUR_APP_NAME/WEB-INF/users.xml"/>
还不完美,但至少你没有使用完整的路径
另一种方法是实现自己的领域,扩展MemoryRealm并在调用super.setPathname()之前预处理路径名
您也可以选择DataSourceAlm,它没有这个问题,并且适合于生产
对于独立于servlet容器的方法,您可以使用基于过滤器的安全框架(例如Spring security…)