【问题标题】:HTML resource not getting constrained in servletsHTML 资源在 servlet 中不受限制
【发布时间】:2012-07-03 07:40:49
【问题描述】:

首先是一些细节:我在 web.xml 中配置了如下安全性 将纯副本查看到剪贴板打印?

<login-config>  
    <auth-method>FORM</auth-method>  
    <form-login-config>  
        <form-login-page>/formLoginPage.html</form-login-page>  
        <form-error-page>/formErrorPage.html</form-error-page>  
    </form-login-config>  
</login-config>  
<security-constraint>  
    <web-resource-collection>  
        <web-resource-name>MyBeerApp</web-resource-name>  
        <url-pattern>/web/form.html</url-pattern>  
        <url-pattern>/SelectBeer.do</url-pattern>         
        <http-method>POST</http-method>  
        <http-method>GET</http-method>  
    </web-resource-collection>  
    <auth-constraint>  
        <role-name>member</role-name>  
    </auth-constraint>  
    <user-data-constraint>  
        <!--transport-guarantee>CONFIDENTIAL</transport-guarantee-->  
    </user-data-constraint>  
</security-constraint>  
<security-role>  
    <role-name>admin</role-name>  
</security-role>  
<security-role>  
    <role-name>member</role-name>  
</security-role>  
<security-role>  
    <role-name>guest</role-name>  
</security-role>  

在tomcat-user.xml中如下: 将纯副本查看到剪贴板打印?

  <role rolename="member"/>  
  <role rolename="guest"/>  
  <user username="vgarg2" password="tomcat" roles="member,guest" />  
  <user username="vgarg3" password="tomcat" roles="guest" />  

文件的位置如下: 将纯副本查看到剪贴板打印?

<TOMCAT_HOME>\Beer-v1\index.html  
<TOMCAT_HOME>\Beer-v1\web\form.html  
<TOMCAT_HOME>\Beer-v1\WEB-INF\web.xml  
<TOMCAT_HOME>\Beer-v1\WEB-INF\classes\...  

form.html 的内容:

查看纯副本到剪贴板打印?

<html>  
<body>  
<h1 align="center">Beer Selection Page</h1>  
<form method="POST" action="../SelectBeer.do">  
Select Beer Characteristics  
Color : <select name="color1" size="1">  
            <option value="light1">Light</option>  
            <option value="amber1">Amber</option>  
            <option value="brown1">Brown</option>  
            <option value="dark1">Dark</option>  
        </select>  
    <br/>  
Can sizes:  
<input type="checkbox" name="sizes" value="12oz">12 oz</input>    
<input type="checkbox" name="sizes" value="24oz">24 oz</input>  
<input type="checkbox" name="sizes" value="36oz">36 oz</input>  
    <br/>  
    <center>  
        <input type="submit"/>  
    </center>  
</form>  
</body>  
<html>  

现在我的问题是“http://localhost:8080/Beer-v1/web/form.html”的请求没有受到限制。 当我从 /web/form.html 向“http://localhost:8080/Beer-v1/SelectBeer.do”提交请求时,它会检查身份验证并询问 ID/密码信息。

如果我禁用安全约束,应用程序可以正常工作。

这里出了什么问题?

【问题讨论】:

    标签: html jsp servlets resources


    【解决方案1】:

    我认为这里的问题是http://localhost:8080/Beer-v1/web/form.html 的响应是从缓存中提供的。

    如果您需要对静态页面进行身份验证,您应该发送缓存控制标头,说明缓存实体不要缓存响应。为此,您应该连同响应一起发送以下标头:

    • 缓存控制:无缓存,无存储
    • 编译指示:无缓存

    注意:如果不应用上面的标题,如果您使用 F5 刷新页面,您应该会看到身份验证将起作用。

    我建议将所有需要身份验证的页面都设置为 JSP。

    【讨论】:

    • Bingo Ramesh :) 它奏效了。但是现在我有另一个问题,因为请求将直接发送到“/web/form.html”,并且两者之间没有涉及 servlet 我如何设置您在响应中提到的标头?
    • 检查服务器是否支持向静态页面添加标题。否则,为静态页面编写自定义过滤器。
    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2020-06-29
    • 1970-01-01
    相关资源
    最近更新 更多