2014-12-03 149 views
0

我正在嘗試爲我的Web應用程序(主要設置數據庫)編寫基於Web的安裝程序。 但是因爲我使用所有Servlets的DIGEST身份驗證,所以我在那裏遇到問題。 我希望能夠讓用戶輸入他的mysql密碼,但他不能,因爲他無法登錄。由於用戶在數據庫中保存的,這並不在這一點上存在,就沒有辦法登錄。改寫Tomcat基本身份驗證

<security-constraint> 
<web-resource-collection> 
    <web-resource-name>Wildcard means whole app requires authentication</web-resource-name> 
    <url-pattern>/*</url-pattern> 
    <http-method>GET</http-method> 
    <http-method>POST</http-method> 
</web-resource-collection> 
<auth-constraint> 
    <role-name>crm_user</role-name> 
</auth-constraint> 
<user-data-constraint> 
    <transport-guarantee>NONE</transport-guarantee> 
</user-data-constraint> 
</security-constraint> 
<login-config> 
<auth-method>DIGEST</auth-method> 
<realm-name>tomcat_realm</realm-name> 
</login-config> 

我可以覆蓋一個單獨的servlet登錄配置,因此用戶不必輸入密碼?

回答

0

請注意,您指定<url-pattern>/*</url-pattern>。您可以使用此模式將安全約束僅應用於您想要驗證的URL。任何不符合此模式的網址都不會應用此安全限制。

您還可以添加第二個安全約束,其URL模式與您不希望保護的URL匹配。在這種情況下,完全忽略auth-constraint標籤,這樣每個人都可以訪問這些URL。例如,看這other question

+0

我知道,但我的程序有超過一百個Servlets,我不喜歡將它們全部映射的想法。沒有辦法給規則添加一個異常? – Kendoha 2014-12-04 11:03:44

+0

@Kendoha我編輯了答案,以包含一個不需要通過鏈接指向示例來更改現有安全約束的選項。 – Rob 2014-12-04 15:23:19

+0

非常感謝你,我會嘗試 – Kendoha 2014-12-05 06:49:57