起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4081|回复: 7

[处理中3] 门户问题

[复制链接]

129

主题

307

帖子

692

积分

高级会员

Rank: 4

积分
692
QQ
发表于 2018-7-9 09:44:10 来自手机 | 显示全部楼层 |阅读模式
1、需求如下:登录门户系统后,需要在门户中点击某个按钮,直接跳转到x5系统的首页,不需要再次登录2、实现方式如下:门户通过链接:http://am.hieo.com/wl/x5/UI2/portal/base/login/dLogin.j      调用我们X5系统中的dLogin.j 文件进行单点登录,门户是通过Header认证方式将username放在header中
3、问题如下:从门户可以直接登录到首页,但是通过点击注销按钮登录就会报“服务器连接超时,是否关闭页面”的提示登录不了,该如何解决??dLogin.j 文件如下:
public class dLogin extends com.justep.ui.impl.JProcessorImpl  {
            public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   

        String username = request.getHeader("username");
        //判断用户是否登录,如果登录强制注销
        ActionResult onLineResult = ActionEngine.invokeActions(JustepConfig.getBusinessServer() + "/onlineUsers", null, null, null, "application/json", "application/json", null, null, "get", null);
        JSONObject onLineContent = (JSONObject) onLineResult.getContent();
        JSONObject data = (JSONObject) ((JSONObject)onLineContent.get("data")).get("value");
        JSONArray ar = (JSONArray) data.get("rows");
        for (int i = 0; i < ar.size(); i++) {//解析在线用户数据的JSONArray
              JSONObject jsonObject = ar.getJSONObject(i);
              String name = (String) ((JSONObject)jsonObject.get("name")).get("value");
              String bsessionID = (String) ((JSONObject)jsonObject.get("sessionid")).get("value");
              if(name.equals(username)){
                ActionEngine.logout(bsessionID, ActionUtils.JSON_CONTENT_TYPE);     //注销已登录的当前用户              
            }

        }

        //用户登录
        JSONObject content = null;
        String bsessionid = "";
        //从cookie中获取已有的bsessionid
        Cookie[] cookies = request.getCookies();
        if (cookies != null){
            for (int i = 0; i < cookies.length; i++) {
              String name = cookies.getName();
              if(name.equals("bsessionid")){
                  bsessionid = cookies.getValue();
              }
            }
        }
        //判断bsessionid是否超时
        ActionResult checkResult = ActionEngine.checkSession(bsessionid, ActionUtils.JSON_CONTENT_TYPE);
        if (checkResult.isSessionTimeOut()) {
            String password = request.getParameter("password");                  
            String ip = request.getRemoteAddr();
            String language = "zh_CN";
            Date loginDate = new Date(System.currentTimeMillis());
            ActionResult actionResult = ActionEngine.login2(username, ActionUtils.md5("123456"), ip, language, loginDate, null, ActionUtils.JSON_CONTENT_TYPE, null);
            content = (JSONObject) actionResult.getContent();
            bsessionid = actionResult.getBSessionID();
            //把bsessionid放到Cookie中
            Cookie cookie = new Cookie("bsessionid",bsessionid);
            cookie.setMaxAge(-1);
            cookie.setPath("/");   
            response.addCookie(cookie);
        } else {
            content = (JSONObject) checkResult.getContent();
        }
        content.put("bsessionid", bsessionid);
        System.out.println("bsessionid:::::"+bsessionid);
        response.setCharacterEncoding("UTF-8");
        response.addHeader("Access-Control-Allow-Origin", "*");
        response.setContentType(ActionUtils.JSON_CONTENT_TYPE);
        response.sendRedirect("http://192.168.5.11:8080/x5/UI2/portal/pc2/index.w?bsessionid="+bsessionid);
        response.flushBuffer();
    }
}

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-7-9 10:33:29 | 显示全部楼层
就会报“服务器连接超时,是否关闭页面”

具体的提示信息发一下看看
/UI2/portal/base/base.js中的logout方法中加debugger调试看看是否执行了
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

129

主题

307

帖子

692

积分

高级会员

Rank: 4

积分
692
QQ
 楼主| 发表于 2018-7-9 10:50:53 来自手机 | 显示全部楼层
服务器连接异常,切换到登录页面
1531104607820..jpg
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-7-9 11:08:39 | 显示全部楼层
下面的logout执行到了吗?
logout.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

129

主题

307

帖子

692

积分

高级会员

Rank: 4

积分
692
QQ
 楼主| 发表于 2018-7-9 11:26:41 来自手机 | 显示全部楼层
执行了
回复

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-7-9 11:31:51 | 显示全部楼层
执行就可以3.4行就会跳转到登录页了,而且里面也没有提示服务器超时的啊

debugger调试看看执行到那句提示的
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

129

主题

307

帖子

692

积分

高级会员

Rank: 4

积分
692
QQ
 楼主| 发表于 2018-7-9 13:22:06 来自手机 | 显示全部楼层
急急急啊,大神帮助一下
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-7-9 13:23:22 | 显示全部楼层
看6楼的回复,调试跟踪一下啊
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-14 07:26 , Processed in 0.103396 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表