【问题标题】:Jetty 8 realm implementations Regular ExpressionJetty 8 领域实现正则表达式
【发布时间】:2012-08-16 07:15:44
【问题描述】:

我正在运行 solr,我想限制对管理面板的访问,因为 url 是 localhost:8983/solr/#/core_1 和 localhost:8983/solr/#/core_2

您会看到它的管理页面有一个 # 符号,当您只想进行正常搜索时,您转到 localhost:8983/solr/core_1browse?q=asdf 这里没有哈希,所以我可以省略它

在我的 webdefault.xml 中,url-pattern 行有效,但它会阻止人们一起使用网络应用程序,因为 * 表示任何字符。我已经尝试了以下代替 /* 所有这些都没有做任何事情,是的,我每次尝试这些时都重新启动了码头服务器。

试过了:/solr 试过了:/#/ 试过了:# 试过:s

<security-constraint>
<web-resource-collection>
  <web-resource-name>Solr authenticated application</web-resource-name>
  <url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
  <role-name>admin-solr3</role-name>
</auth-constraint>

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Test Realm</realm-name>
</login-config>

【问题讨论】:

    标签: regex jetty


    【解决方案1】:

    您的 URL 中的“#”符号不能用作 url 模式。

    在 URL 中使用“#”表示 URL 片段/锚点,因此,请求 URL 的一部分不会由 Web 浏览器发送到服务器(另一方面,自定义 HTTP 客户端库可以发送片段/锚定部分)

    【讨论】:

    • 我通过为 root 设置密码来完成这项工作,然后我将子网址列入白名单。但是我仍然有一个问题,我可以做 /collection1/* 但是当我只想允许他们使用浏览功能时,我不能做以下 /collection1/brow*
    • 没错。 servlet 规范表明 url-pattern 字符串不是正则表达式,而是 servlet 规范中 SRV.11.2 概述的一组规则。在此处查看旧答案stackoverflow.com/questions/26732/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多