cancel
Showing results for 
Search instead for 
Did you mean: 

二次开发界面的跳转问题

former_member197088
Participant
0 Kudos

使用二次开发的界面登录后,想切换到http://server:8080/BOE/BI,但是需要输入密码,这里该怎么带入登录二次开发界面时用户的TOKEN,求大神指教。

Accepted Solutions (1)

Accepted Solutions (1)

former_member197088
Participant
0 Kudos

有朋友说类似opendocment的SDK的URL连接带TOKEN,想问下具体是什么样的,有知道的朋友么?

Former Member
0 Kudos

BO的token类是自己封装的,其工作原理大致跟普通的token是一样的。查一下sdk就知道了。

former_member197088
Participant
0 Kudos

我的意思是是哪样的URL,比如http://server:8080/OpenDocument/1409111437/OpenDocument/opendoc/opendocument.faces,类似这种,怎么在后面带了TOKEN只是到BI启动板的主页,而不是进入某张报表。

Former Member
0 Kudos

先把token弄session里去,然后直接访问首页

0 Kudos

下面的jsp代码你参考下:

<%IEnterpriseSession sess = CrystalEnterprise.getSesionMgr().logon("administrator","password","localhost:6400", "secEnterprise");

String token = sess.getLogonTokenMgr().createLogonToken("", 120, 100);

sess.logoff();

String myUrl = ("http://localhost:8080/BOE/Opendocument/opendoc/openDocument.jsp?iDocID=adbceFGHijk&sIDType=CUID&toke...=" + token);

response.sendRedirect (myUrl);

%>

former_member197088
Participant
0 Kudos

不是这个。这个的话我弄出来了的,是这样的,我已经把整个的报表查看,提示对象等都开发出来了,但是那个界面里没有首选项,我已经把权限控制好了,需要用户登陆到http://server:8080/BOE/BI里倒首选项去自己修改密码,设置查看WEBI的方式,以及在界面上修改自己的个人收藏夹信息等,但是当用户使用java登陆到报表界面的时候,再通过跳转的方式到http://server:8080/BOE/BI后没有保存第一次登陆的那个TOKEN,好像不是同一个域的感觉,也是用上面的代码吗?

0 Kudos

奥。如果涉及到页面跳转还要记录登录信息的话,应该是Mophi说的把token放到session里保存。但是你说的http://server:8080/BOE/BI是BI产品的标准登录画面而不是你们自己的做的吧?

former_member197088
Participant
0 Kudos

嗯,这个SESSION该如何保存呢?目前SESSION好像确实有点问题,本来打算设置注销的,不过后面发现在CMC里看到这些会话会自动注销。

former_member197088
Participant
0 Kudos

貌似我已经保存到SESSION里了,我发下代码。sessionMgr = CrystalEnterprise.getSessionMgr();

IEnterpriseSession enterprisesession = sessionMgr.logon(username,password,cms,authentication);

ILogonTokenMgr mgr = enterprisesession.getLogonMgr.logonTokenMgr();

String tokenStr = mgr.createLogonToken("",24*60,Integer.MAX_VALUE);

req.getSession().setAttribute("token",tokenStr);

former_member197088
Participant
0 Kudos

尽管我设置的是24小时才注销SESSION,但是实际情况还是10分钟还是20分钟就自动注销了,在CMC端看到的是已经登陆了无ID登陆客户端的会话存在,而想切换到有ID的标准BOE平台就会出现上面说明的情况。

0 Kudos

你能看到KBA1601486吗?里面提到可以用  "http://<hostname>:<port>/BOE/BI/logon/start.do?ivsLogonToken="+logonTokenValue的格式用sdk的token登录BI Launchpad。

former_member197088
Participant
0 Kudos

好的,谢谢,在网上找过资料,有这样的说明,不过不大清楚logonTokenValue是什么。

0 Kudos

就是你代码里面的tokenStr.

former_member197088
Participant
0 Kudos

已经解决了,前面也用这个URL拼,发现最后拼出来TOKEN是空,可是我把整个链接一起输入到IE浏览器又能进入界面,重新添加了一个url,解决了这个问题,谢谢了。

Former Member
0 Kudos

这个问题很简单的,跟普通的Java没啥区别,不要想的太复杂。

要么你跟Tina说的那样,把token作为jsp的一个参数带进去。

要么你把token放session里。

实际上BO Launch Pad的登录页面start.do?这个已经很能说明问题了。

这个页面里面100%的会有检测登录信息的代码。

如果他检测到你session里有token,就会自动放行。如果不然,8成可以去找SAP了。

这个无非是一个token的作用域的问题,一个是放session,一个是当参数。

former_member197088
Participant
0 Kudos

放SESSION好像是不行的,两者链接TOKEN的方式都不一样,一个是opendocment,一个是start.do,我开始也以为通过opendocment也可以让BOE来验证并通行,实际情况系统并不允许,感觉这个应该是分开了的。可能和html和applet机制有关。

Answers (0)