2009-01-23 23 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