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

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主: zyzn123

[结贴] 限制只能登录次数

[复制链接]

157

主题

600

帖子

937

积分

高级会员

Rank: 4

积分
937
QQ
 楼主| 发表于 2018-2-6 11:11:49 | 显示全部楼层
怎么判断在线啊?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-2-6 11:13:31 | 显示全部楼层
直接调用UI2/system/service/common/queryOnlineUsers.j啊
2楼发的案例中就有
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

157

主题

600

帖子

937

积分

高级会员

Rank: 4

积分
937
QQ
 楼主| 发表于 2018-2-6 11:14:48 | 显示全部楼层
判断某个用户名是否在线,如果在线,则注销掉,重新登陆,如果不在线,则登陆?

怎么代码判断在线啊?
回复 支持 反对

使用道具 举报

157

主题

600

帖子

937

积分

高级会员

Rank: 4

积分
937
QQ
 楼主| 发表于 2018-2-6 11:23:35 | 显示全部楼层
.j文件,怎么直接调用 UI2/system/service/common/queryOnlineUsers.j

需求是这样的,我通过我自定义的那个.j实现了单点登录,所以,必须在.j中去调用queryOnlineUsers.j,目前一直没有成功?

要么,您帮远程一下吧
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-2-6 11:43:42 | 显示全部楼层
单点登录调用你的.j怎么调用的?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

157

主题

600

帖子

937

积分

高级会员

Rank: 4

积分
937
QQ
 楼主| 发表于 2018-2-6 13:49:32 | 显示全部楼层
门户网站直接调用我的.j   ,在.j中实现了登录,之后直接进入了BeX5系统,代码在前面已发了(17楼)。

现在就差,如果登录了,需要注销原先的,如果没有登录,就直接登录。所以,现在差检测该用户是否已经登录的功能。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-2-6 14:42:53 | 显示全部楼层
别的门户中调用你的.j之前有用户名吧,获取到用户名先用ajax调用在线用户的.j,判断后在调用自己的定义的.j

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



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

使用道具 举报

157

主题

600

帖子

937

积分

高级会员

Rank: 4

积分
937
QQ
 楼主| 发表于 2018-2-6 14:53:56 | 显示全部楼层
别的门口只会调用我的.j文件,后台信息都存储到request对象中。所以,我必须在.j文件中,获取用户名,还有其他信息,验证,开始登陆。

1 目前,能否在.j文件中,检测该用户是否已经登录,如果登录,必须注销掉?
2 如果未登陆,则直接登录。

前面的那个.j文件为什么不行啊?
就是抛出错误的那个? 14楼的那个


恩,UI2/system/service/common/queryOnlineUsers.j下面代码即为:
        StreamCallback callback = new StreamCallback(response);
                    String accept = NetUtils.getAccept(request);
                    String contentType = NetUtils.getContentType(request);
                    
                    ActionResult actionResultCheck=ActionEngine.invokeActions(JustepConfig.getBusinessServer() + "/onlineUsers", null, null, null, accept, contentType, null, null, "get", callback);
               
                    System.out.println("actionResultCheck="+actionResultCheck);

会抛出异常?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-2-6 16:15:03 | 显示全部楼层
  1. import java.io.IOException;
  2. import java.sql.Date;
  3. import java.util.ArrayList;

  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.Cookie;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;

  8. import org.dom4j.Document;

  9. import com.alibaba.fastjson.JSONArray;
  10. import com.alibaba.fastjson.JSONObject;
  11. import com.justep.biz.client.ActionEngine;
  12. import com.justep.biz.client.ActionResult;
  13. import com.justep.biz.client.ActionUtils;
  14. import com.justep.ui.JustepConfig;
  15. import com.justep.ui.util.NetUtils;


  16. public class Login extends com.justep.ui.impl.JProcessorImpl  {
  17.     public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   
  18.       
  19.             String username = request.getParameter("username");
  20.             
  21.             //判断用户是否登录,如果登录强制注销
  22.                 ActionResult onLineResult = ActionEngine.invokeActions(JustepConfig.getBusinessServer() + "/onlineUsers", null, null, null, "application/json", "application/json", null, null, "get", null);
  23.                 JSONObject onLineContent = (JSONObject) onLineResult.getContent();
  24.                 JSONObject data = (JSONObject) ((JSONObject)onLineContent.get("data")).get("value");
  25.                 JSONArray ar = (JSONArray) data.get("rows");
  26.                 for (int i = 0; i < ar.size(); i++) {//解析JSONArray
  27.                           JSONObject jsonObject = ar.getJSONObject(i);
  28.                           String name = (String) ((JSONObject)jsonObject.get("name")).get("value");
  29.                           String bsessionID = (String) ((JSONObject)jsonObject.get("sessionid")).get("value");
  30.                           if(name.equals(username)){
  31.                                 ActionEngine.logout(bsessionID, ActionUtils.JSON_CONTENT_TYPE);                                    
  32.                         }
  33.                         
  34.                 }

  35.                 //用户登录
  36.         JSONObject content = null;
  37.         String bsessionid = "";
  38.         //从cookie中获取已有的bsessionid
  39.         Cookie[] cookies = request.getCookies();
  40.         if (cookies != null){
  41.             for (int i = 0; i < cookies.length; i++) {
  42.               String name = cookies[i].getName();
  43.               if(name.equals("bsessionid")){
  44.                   bsessionid = cookies[i].getValue();
  45.               }
  46.             }
  47.         }
  48.         //判断bsessionid是否超时
  49.         ActionResult checkResult = ActionEngine.checkSession(bsessionid, ActionUtils.JSON_CONTENT_TYPE);
  50.         if (checkResult.isSessionTimeOut()) {
  51. //            String username = request.getParameter("username");
  52.             String password = request.getParameter("password");   
  53.                  
  54.             String ip = request.getRemoteAddr();
  55.             String language = "zh_CN";
  56.             Date loginDate = new Date(System.currentTimeMillis());
  57.             ActionResult actionResult = ActionEngine.login2(username, password, ip, language, loginDate, null, ActionUtils.JSON_CONTENT_TYPE, null);
  58.             content = (JSONObject) actionResult.getContent();
  59.             bsessionid = actionResult.getBSessionID();
  60.             //把bsessionid放到Cookie中
  61.             Cookie cookie = new Cookie("bsessionid",bsessionid);
  62.             cookie.setMaxAge(-1);
  63.             cookie.setPath("/");   
  64.             response.addCookie(cookie);
  65.         } else {
  66.             content = (JSONObject) checkResult.getContent();
  67.         }
  68.         content.put("bsessionid", bsessionid);
  69.         response.setCharacterEncoding("UTF-8");
  70.         response.addHeader("Access-Control-Allow-Origin", "*");
  71.         response.setContentType(ActionUtils.JSON_CONTENT_TYPE);
  72.         response.sendRedirect("/x5/UI2/portal/pc3/index.w");  
  73.         response.flushBuffer();
  74.          
  75.     }
  76. }
复制代码
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

157

主题

600

帖子

937

积分

高级会员

Rank: 4

积分
937
QQ
 楼主| 发表于 2018-2-6 18:00:42 | 显示全部楼层
问题完美解决,非常感谢,向您致敬,谢谢了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 04:31 , Processed in 0.100821 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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