2013-06-19 81 views
0

我正在使用Java ee創建一個Web應用程序。我有一個glassfish v4服務器,現在我試圖通過在我的web.xml文件中指定安全約束來使安全性工作。java ee應用程序的聲明式安全

我的應用程序名爲linkUI,我想嘗試創建一個必須登錄才能訪問localhost:8080/linkUI/area上的任何資源的保護區域,所以我爲此添加了一個安全約束在web.xml中。但是當我嘗試訪問這個地址時,我得到了「HTTP Status 404 - Not Found」(我還沒有創建任何資源),而不是被重定向到我在配置描述符中配置的登錄頁面。它似乎找到了部署描述符,因爲當我直接登錄到login.jsp時,它會將我重定向到預期的錯誤頁面。雖然登錄似乎總是失敗,儘管我在glassfish服務器上添加了一個用戶和組,並啓用了默認主體到角色映射,如下所示:http://docs.oracle.com/javaee/6/tutorial/doc/bncbx.html#bncby

我不確定現在要檢查什麼。有什麼建議麼?

這是我的web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    version="3.1"> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
     <!-- SECURITY CONSTRAINT #1 --> 
    <security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Protected area</web-resource-name> 
      <url-pattern>/linkUI/area/*</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>testgroup</role-name> 
     </auth-constraint> 
    </security-constraint> 
    <login-config> 
     <auth-method>FORM</auth-method> 
     <realm-name>file</realm-name> 
     <form-login-config> 
      <form-login-page>/login.jsp</form-login-page> 
      <form-error-page>/loginError.jsp</form-error-page> 
     </form-login-config> 
    </login-config> 
    <security-role> 
     <description/> 
     <role-name>testgroup</role-name> 
    </security-role> 
</web-app> 

回答

0

如果要保護本地主機:8080/linkUI /區域/ *,然後 linkUI是您的上下文根,默認情況下,您的 WAR文件的名稱。是這樣嗎?

如果是這樣,URL模式應該是相對上下文根,即:

<url-pattern>/area/*</url-pattern>