XPages中的呼叫代理-登录表单出现

时间:2018-08-23 10:15:39

标签: java xpages xpages-ssjs

我正在通过SSJS从XPage呼叫代理:

importPackage(java.net);
importPackage(java.io);

var protocol = context.getUrl().getScheme();    
var host = context.getUrl().getHost();
var url = protocol + "://" + host;
var path = env["dir_path"];
var dbName = datasource["db_app_filepath"];
var agentRef = "response?OpenAgent";
var paramName = "custId";

var urlAgent = url + "/" + path + dbName + "/" + agentRef;
var agent:URL = new URL(urlAgent);
var agentConnection:URLConnection = agent.openConnection();
var inputReader:BufferedReader = new BufferedReader(new InputStreamReader(agentConnection.getInputStream()));
var res:String="";
while ((inputLine = inputReader.readLine()) != null) {
    res+=inputLine;
}
print("value form agent = " + res);

代理仅返回一个简单的字符串:

Option Public
Option Declare

Sub Initialize
    Dim session As New NotesSession
    Dim creator As String
    creator = session.EffectiveUserName
    Print "Hello World " + creator
End Sub

但是在控制台的打印语句中,我看到显示了登录表单。

如果我直接在浏览器窗口中访问代理,则会得到以下示例:

  

Hello World CN =§Unrestricted§Signer/ OU = System / O = ACME

这是我在“代表代理运行”属性中设置的用户名。

在XPage上,我已经通过身份验证。

我应该在通话中提供凭据吗?

代码背后的想法是,我想检查用户是否没有为某种对象创建重复条目。这些对象(“注释”文档)具有“读者”限制,因此用户X可能看不到用户Y的条目。

2 个答案:

答案 0 :(得分:3)

ODA有一个用于此目的的方法,如果您使用本机服务器会话,则它应该具有访问权限-如果服务器没有访问权限,则应用程序有时会遇到更大的问题。

push

$('ul > li > span').click(function() { indToCookie = $('ul > li > span').index(this); $.cookie('nav-item', indToCookie); valCookie = $.cookie('nav-item'); indArray.push(valCookie); // <-- add this line }); 使用视图中一个或多个键的对象来检查唯一性以及当前文档。显然,如果用户重新保存文档,则该文档在视图中将是唯一的,因此您不希望引发错误。同样,如果可以更改键,则仅在创建时执行检查也不会阻止唯一性。

答案 1 :(得分:0)

如果您想通过http呼叫座席,则需要提供凭据。您可以使用https://username:password@restofurl格式执行此操作。当然,这令人头疼。

更新 验证存储在日志中的内容。浏览器会将该语法转换为基本Auth标头和常规URL。在Java中,您可能需要自己创建该标头。 /更新

可能对您有用的替代方法:由于浏览器已通过身份验证,因此请使用浏览器中的Ajax调用来触发代理。

如果不是sessionAsSigner的用户,请尝试。

当然:最好不要做代理。您可能有一个受管bean,它创建了自己的基于server.id的会话。