如何在不更改tomcat-users.xml的情况下为静态tomcat Web应用程序提供基本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管理器并可以上传war文件。其中一个war是静态web项目(压缩html+媒体文件,重命名为*.war)。我想在这个war中添加一个Web INF/Web.xml文件,用基本的http身份验证来保护内容

我知道如何通过在
tomcat users.xml
中添加全局用户和分配角色来实现这一点,但我希望在war文件中定义所有用户名和密码

  • 这可以在不接触tomcat的
    tomcat users.xml的情况下完成吗
  • 如果是,我如何在静态项目的
    web.xml
    中指定它
  • Thx,尤文

    我在这里找到了一个解决方案:

    该页面描述了如何定义自己的
    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…)