Java Tomcat Web xml URL模式不接受带有参数的URL?

Java Tomcat Web xml URL模式不接受带有参数的URL?,java,security,tomcat,web.xml,url-pattern,Java,Security,Tomcat,Web.xml,Url Pattern,我试图在tomcat6上为一个出售的应用程序保护几页。除了两个URL(在下面的代码中用双星号标记),我成功地为大多数URL使用URL模式进行了安全保护。这两个URL的不同之处在于它们采用了确定视图的参数。我想限制这两个视图,因此指定了要阻止/保护/验证的确切URL,如下所示。但tomcat并没有保护它们 <security-constraint> <web-resource-collection> <

我试图在tomcat6上为一个出售的应用程序保护几页。除了两个URL(在下面的代码中用双星号标记),我成功地为大多数URL使用URL模式进行了安全保护。这两个URL的不同之处在于它们采用了确定视图的参数。我想限制这两个视图,因此指定了要阻止/保护/验证的确切URL,如下所示。但tomcat并没有保护它们

 <security-constraint>
            <web-resource-collection>
                    <web-resource-name>TopBraid</web-resource-name>
                    <description>Restrict few pages that need security.</description>
                    <url-pattern>/tbl/admin/*</url-pattern>
                    <url-pattern>/tbl/sparql/*</url-pattern>
                    **<url-pattern>/tbl/swp?_viewClass=appConfig:ServerConfigEditor</url-pattern>**
                    **<url-pattern>/tbl/swp?_viewClass=adminConfig:AdminEditPage</url-pattern>**
                    <url-pattern>/tbl/sp_reset</url-pattern>
                    <url-pattern>/tbl/sp_redeploy</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                    <role-name>SERVER_ADMINS</role-name>
            </auth-constraint>
    </security-constraint>
    <security-role>
            <role-name>SERVER_ADMINS</role-name>
    </security-role>
    <login-config>
            <auth-method>FORM</auth-method>
            <realm-name>TopBraid</realm-name>
            <form-login-config>
                    <form-login-page>/logon.html</form-login-page>
                    <form-error-page>/logonError.html</form-error-page>
            </form-login-config>
    </login-config>
    <security-constraint>
            <web-resource-collection>
                <web-resource-name>Public</web-resource-name>
                <description>Matches any page.</description>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
    </security-constraint>

顶辫
限制少数需要安全性的页面。
/tbl/行政/*
/tbl/sparql/*
**/tbl/swp?\u viewClass=appConfig:ServerConfigEditor**
**/tbl/swp?\u viewClass=adminConfig:AdminEditPage**
/tbl/sp_复位
/tbl/sp_重新部署
服务器管理员
服务器管理员
形式
顶辫
/logon.html
/logonError.html
公开的
匹配任何页面。
/*

我知道JSR规范可能会将它们称为无效模式。想知道是否可以以某种方式指定模式以使其可接受。或者是否有其他方法限制对上面列出的两个URL的访问?

限制对特定URL参数及其值的访问,就像您在上面尝试的那样
/tbl/swp?\u viewClass=tblconfig:ConfigEditor
/tbl/swp?_viewClass=admins:AdminsEditorPage
无法从web或应用程序服务器进行访问。这种类型的过滤/URL限制必须由应用程序本身通过为这些视图创建唯一的会话来执行


当应用程序服务器解析传入URL时,它们的工作在到达第一个“?”时完成,这是要传递给应用程序的第一个参数。从这里开始,应用程序必须处理任何类型的过滤/访问控制。

限制对特定URL参数及其值的访问,就像您在上面尝试做的那样。
/tbl/swp?\u viewClass=tblconfig:ConfigEditor
/tbl/swp?_viewClass=admins:AdminsEditorPage
无法从web或应用程序服务器进行访问。这种类型的过滤/URL限制必须由应用程序本身通过为这些视图创建唯一的会话来执行


当应用程序服务器解析传入URL时,它们的工作在到达第一个“?”时完成,这是要传递给应用程序的第一个参数。从这里开始,任何类型的过滤/访问控制都必须由应用程序处理。

为什么不使用/tbl/swp来代替它们?还有其他URL中包含/tbl/swp模式,不需要身份验证,比如/tbl/swp?\u viewName=home。为什么不使用/tbl/swp来代替它们?还有其他URL中包含/tbl/swp模式,不需要身份验证像/tbl/swp这样的身份验证?\u viewName=home。谢谢您的回答。您认为编写一个定制的Tomcat阀来拦截所有请求,然后进行身份验证可能会有所帮助吗。我有这个想法,但不知道如何继续。不,这对这两个例子没有帮助。这必须由Java代码来处理,而不是由应用服务器来处理。没有Tomcat阀门能够做到这一点。感谢您的回答。您认为编写一个定制的Tomcat阀来拦截所有请求,然后进行身份验证可能会有所帮助吗。我有这个想法,但不知道如何继续。不,这对这两个例子没有帮助。这必须由Java代码来处理,而不是由应用服务器来处理。没有Tomcat阀能够做到这一点。