2017-10-13 307 views
1

我知道已經有其他職位類似於我的疑問,但問題是我無法解決問題。 我必須名爲「passport.jsp」映射一個servlet,因爲外部應用程序(不能改變調用)使得通過一個URL的請求http://myipserver:portserver/nameApplication/passport.jsp?xxx 我在這一點上的web.xml是在這裏:在web.xml安全約束配置一個異常

<servlet-mapping> 
    <servlet-name>PortalServlet</servlet-name> 
    <url-pattern>/passport.jsp</url-pattern> 
</servlet-mapping> 

問題是我的安全約束映射覆蓋了servlet passport.jsp的定義,因爲映射「* .jsp」。

<security-constraint> 
    <display-name>EsconderJSP</display-name> 
    <web-resource-collection> 
     <web-resource-name>JSP</web-resource-name> 
     <description/> 
     <url-pattern>*.jsp</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <description/> 
     <role-name>jsps</role-name> 
    </auth-constraint> 
</security-constraint> 

有沒有人知道如何解決這個問題?您可以添加servlet「/passport.jsp」作爲例外。

感謝您的關注。

回答

0

我解決只是增加我的web.xml中一個新的標籤(其它安全約束)

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>free pages</web-resource-name> 
     <url-pattern>/passport.jsp</url-pattern> 
    </web-resource-collection> 
</security-constraint> 

安它的工作。謝謝

0

您可以添加其他的安全約束它上面有沒有保護

<security-constraint> 
    <web-resource-collection> 
     <url-pattern>/passport.jsp</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>*</role-name> 
    </auth-constraint> 
    <user-data-constraint> 
     <transport-guarantee>NONE</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

或者你可以改變應用程序的請求,開始與不同的東西來進行保護。這將使護照申請不受保護。

http://myipserver:portserver/nameApplication/otherRequests/foobar.jsp 

http://myipserver:portserver/nameApplication/passport.jsp 

那麼只有保護/otherRequests/*

<url-pattern>/otherRequests/*</url-pattern> 
+0

嗨!感謝您的關注。我用你的小費解決了我的問題。我把 空閒頁面 /passport.jsp