2009-01-23 46 views
1

我可以使用JSTL訪問經過身份驗證的Web服務嗎? (基於表單的身份驗證)JSTL和經過身份驗證的Web服務

如果我不能使用JSTL來做到這一點,是否有任何其他方式我從JSP做到這一點?


也許我需要提供一些信息。我使用的核心庫:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

,進口標籤,如:

<c:import var="xml" url="http://my.service.com/api/xml"/>

哪裏http://my.service.com/api/xml是需要基於表單的身份驗證的Web服務 - 如果我嘗試在瀏覽器中訪問它,系統會提示我在Web表單中提供用戶名和密碼,而不是彈出窗口。

對不起,我沒有Web服務專家的你可以告訴 - 手指交叉一個簡單的解決方案:)

回答

0

@Brabster as @duffymo說,jstl與web服務認證無關。

如果您需要避免在某個JSP中顯示身份驗證頁面,也許您可​​以使用自定義標記來處理身份驗證。你如何使用主要方法在一個簡單的控制檯程序中驗證你的Web服務?如果您知道如何做到這一點,那麼將該代碼集成到自定義標籤中很容易。

0

JSTL == JSP標準標記庫?如果是這樣,我不明白JSTL和JSP是如何不同的。

如果您將標記添加到HTML或SOAP標頭,則假設Web服務知道如何獲取它們以及如何使用它們。基於表單的身份驗證使用j_username和j_password作爲表單元素參數名稱。

我想說安全應該是一個橫切關注。過濾器或方面應該能夠從HTTP標頭中獲取這些值併爲您進行身份驗證。

+0

JSTL只是一個標準的標籤庫,JSP是Java Server Pages技術。感謝您的想法 – Brabster 2009-01-23 16:49:49

0

什麼是調用Web服務從JSTL認證,與直接從你的JSP/JSTL頁面做的,例如目的:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %> 

<c:remove var="validUser" scope="session"/> 
<c:if test="${empty param.user_name || empty param.password}"> 
<c:redirect url="login.jsp"/> 
</c:if> 

<sql:query var="users"> 
SELECT 1 FROM users WHERE user_name = ? AND password = ? 
<sql:param value="${param.user_name}" /> 
<sql:param value="${param.password}" /> 
</sql:query> 
<c:if test="${users.rowCount == 0}"> 
<c:redirect url="login.jsp"/> 
</c:if> 

請記住,爲了實現形式的認證,你必須表明它在web.xml文件:

<login-config> 
<auth-method>FORM</auth-method> 
<form-login-config> 
    <form-login-page>/main/login.jsp</form-login-page> 
</form-login-config> 
</login-config> 

如果你想要的是通過使用標籤庫,你可以從Java社區使用JSP Tag Library for Web Services消耗一定的web服務。

+1

問題是關於登錄到外部Web服務,以便其服務/數據可以訪問,而不是登錄到自己的網站。 – BalusC 2010-11-28 00:21:15