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

QQ登录

只需一步,快速开始

楼主: longyu065

[结贴] 登录验证

[复制链接]

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36064
发表于 2016-11-24 11:31:05 | 显示全部楼层
你在平台的loginAction执行前事件中去调用sso验证,这样只知道登录名,你的验证不通过也不能的登录啊
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

26

主题

88

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
QQ
 楼主| 发表于 2016-11-24 12:00:41 | 显示全部楼层
jishuang 发表于 2016-11-24 11:31
你在平台的loginAction执行前事件中去调用sso验证,这样只知道登录名,你的验证不通过也不能的登录啊 ...

好的,谢谢,我先研究研究
回复 支持 反对

使用道具 举报

26

主题

88

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
QQ
 楼主| 发表于 2016-11-24 14:50:57 | 显示全部楼层
jishuang 发表于 2016-11-24 11:31
你在平台的loginAction执行前事件中去调用sso验证,这样只知道登录名,你的验证不通过也不能的登录啊 ...

我现在在loginAction执行事件前去调用sso验证,如果验证不通过我该如何阻止loginAction 执行
public static void systemProcessBeforeLoginAction() {
                boolean checkWebService = true;
                if(checkWebService){
                        java.lang.System.out.println("==========WebService验证成功,进入X5系统==============");
                }else{
                        java.lang.System.out.println("==========WebService验证失败,重新登录==============");
                       ?????????????????????如何阻止后面的loginAction()
                }
        }


谢谢
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36064
发表于 2016-11-24 15:05:07 | 显示全部楼层
直接抛异常啊
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

26

主题

88

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
QQ
 楼主| 发表于 2016-12-1 09:08:23 | 显示全部楼层
jishuang 发表于 2016-11-24 10:40
1.做第三方校验的时候不推荐在js中去调用,可以在平台的loginAction执行前事件中去调用,然后按照我4楼发的 ...

这样处理是在执行登陆前就选择主岗,能不能在完成登陆验证后进入主界面之间进行选择岗位的操作?如果可以该如何实现,谢谢
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36064
发表于 2016-12-1 10:30:47 | 显示全部楼层
可以在/UI2/portal/base/login/login.js的
this.comp("receiver").windowEnsure(result.data);之前给result.data中加executor参数如下:
  1.                         //增加返回参数executor
  2.                         result.data["executor"] = "/16EC156F13974ECBAE24230C0F0E78D3.ogn/82412AACFD3C49DE8EB1AB5EA690F008.dpt/1BF0605706FC4EC2B3020DF7A47C6EE5.pos/PSN01@1BF0605706FC4EC2B3020DF7A47C6EE5.psm";
  3.                         this.comp("receiver").windowEnsure(result.data);
复制代码

然后在/UI2/portal_X/base/base.js中setPortalContext方法中设置executor
在                context.data = data;前面加上
  1.                 if(data.executor){
  2.                         executor = data.executor;
  3.                 }
复制代码


完整的如下:
  1.         Model.prototype.setPortalContext = function(data) {
  2.                 var context = this.getContext();
  3.                 // todo 合并executor, executeContext, 代码不好, 指定了具体的参数
  4.                 var executor = null;
  5.                 var executeContext = null;
  6.                 if (context.data.params) {
  7.                         executor = context.data.params.executor;
  8.                         executeContext = context.data.params.executeContext;
  9.                 }
  10.                 if(data.executor){
  11.                         executor = data.executor;
  12.                 }
  13.                 context.data = data;
  14.                 context.data.params = context.data.params || {};
  15.                 context.data.params.executor = executor;
  16.                 context.data.params.executeContext = executeContext;

  17.                 window.__justep.__portalContext = context;
  18.                 this.setBsessionid(context.data.bsessionid);
  19.         };
复制代码


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



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

使用道具 举报

26

主题

88

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
QQ
 楼主| 发表于 2016-12-1 16:41:46 | 显示全部楼层
jishuang 发表于 2016-12-1 10:30
可以在/UI2/portal/base/login/login.js的
this.comp("receiver").windowEnsure(result.data);之前给result ...

按照您给的解决方案我在login.js中的login()函数中添加result.data["executor"] = sFID,如果在此处我通过登录名去sa_oporg表中获取数据通过弹出对话框供用户选择岗位,用户选择后将sFID传给result.data["executor"],我使用x5的bizData绑定queryAction去执行查询岗位,是不是需要模拟登陆才能执行Action?因为我直接使用会报未登录bizAction无法使用。这种情况除了模拟登陆还有其他的解决方案吗?谢谢
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36064
发表于 2016-12-1 18:13:06 | 显示全部楼层
在result中已经有bsessionid了
不要用bizdata,直接放action请求去获取看看
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

26

主题

88

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
QQ
 楼主| 发表于 2016-12-2 10:53:24 | 显示全部楼层
jishuang 发表于 2016-12-1 18:13
在result中已经有bsessionid了
不要用bizdata,直接放action请求去获取看看

直接放action请求不行,获取不到数据
控制台:
2016-12-02 10:48:26 Not registed session:6DB3680EA8F65B592E51DAF84CE4FD0E, jsessionid:JSESSIONID=null; request-use-base64=false, action: {"accept":"application/json","action":"queryPositionAction","actionFlag":"__action_0__","activity":"","contentType":"json","executeContext":"","executor":"","parameters":{},"process":""}
2016-12-02 10:48:26 Not registed session:C02485210654A058674DEA7CAFADC0D6, jsessionid:null, action: logoutjs跟了一下发现biz.Request.sendBizRequest回调不成功
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36064
发表于 2016-12-2 11:09:54 | 显示全部楼层
在Model.prototype.setPortalContext方法中可以直接context.getAllPersonMemberFIDs()获取到所有岗位的fid的值,不需要发请求
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 23:53 , Processed in 0.064010 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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