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

QQ登录

只需一步,快速开始

查看: 15254|回复: 28

[结贴] 登录验证

[复制链接]

26

主题

88

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
QQ
发表于 2016-11-23 14:44:11 | 显示全部楼层 |阅读模式
本帖最后由 longyu065 于 2016-11-23 14:46 编辑

Bex5 V3.5 你好,因业务需求,x5 sa_opperson 库中登录密码为空 ,在登录时我只想验证用户名(用户登录验证我在别的地方已经做完了,只想验证用户名),不验证登录密码,请问怎么处理?
我现在定位到 biz.Request.login(params);但代码是核心包里的,我该怎么处理?谢谢
        Model.prototype.doLogin = function(params){
            params['url'] = require.toUrl(loginAction);        
            var result = biz.Request.login(params);
            if(result.status === 0 || result.status === 500){
                    return {flag: false, message: "网络有问题, 请与管理员联系!"};
            }else{
                    return JSON.parse(result.responseText);
            }        
        };        

另外,还有一个问题就是,我在数据库中直接复制system的密码给一个新用户为什么无法登录,密码不正确?谢谢


91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-11-23 15:42:12 | 显示全部楼层
1.密码的值不能为空,没有密码为空这样的接口
在登录的时候可以不做密码校验可以用ntLogin这个action去登录,这个action在model同级的conf\server.xml中配置一个默认的密码就可以
但是数据库中必须有密码
  
2.数据库中的值直接复制,system输入相同的密码就可以登录?这个应该不可能
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

26

主题

88

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
QQ
 楼主| 发表于 2016-11-23 15:47:02 | 显示全部楼层
本帖最后由 longyu065 于 2016-11-23 16:06 编辑
jishuang 发表于 2016-11-23 15:42
1.密码的值不能为空,没有密码为空这样的接口
在登录的时候可以不做密码校验可以用ntLogin这个action去登录 ...
1)"数据库中的值直接复制,system输入相同的密码就可以登录?这个应该不可能"
===========
我的意思是在数据库中直接将system的密码复制给新用户,新用户在前台使用system的密码123456登陆为什么报密码错误?
2) 如何使用ntLogin替换loginAction?
谢谢
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-11-23 16:48:12 | 显示全部楼层
1.确认输入的密码正确
如果数据库中复制的完全一样,system可以登录,那么另一个用户肯定也可以登录

新用户是怎么添加的?
2.
把/BIZ/system/logic/code/dsrc/OPMProcedure.java中的下面地方的true改为false,但是这样会有漏洞,只要知道你的用户名就可以的登录了
login.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

26

主题

88

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
QQ
 楼主| 发表于 2016-11-23 17:26:24 | 显示全部楼层
jishuang 发表于 2016-11-23 16:48
1.确认输入的密码正确
如果数据库中复制的完全一样,system可以登录,那么另一个用户肯定也可以登录

1) 我的sa_opperson中的数据是从别的库里获取的数据导进去的,sa_oporg也做了必要的改动,使用system登录在组织管理中是可以看到人员信息的,但登陆时使用和system一样的密码却无效

360截图20161123171021970.jpg


2)我按照您的方法将login函数中的true改为false只用用户名 无法登录

360截图20161123171034794.jpg

错误信息如下:

String index out of range: 1
隐藏详细
Error: String index out of range: 1 at Object.create (http://127.0.0.1:8080/x5/UI2/v_d ... se/error_X.js:29:13) at n.Model.login (http://127.0.0.1:8080/x5/UI2/v_d ... gin/login.js:112:29) at n.Model.loginClick (http://127.0.0.1:8080/x5/UI2/v_d ... ogin/login.js:143:9) at n.fire (http://127.0.0.1:8080/x5/UI2/v_8 ... re.min.js:65:236000) at n.fireEvent (http://127.0.0.1:8080/x5/UI2/v_8 ... re.min.js:65:237164) at n.callParent (http://127.0.0.1:8080/x5/UI2/v_8 ... re.min.js:65:233439) at n.fireEvent (http://127.0.0.1:8080/x5/UI2/v_c ... mmon.min.js:15:3768) at n._doClick (http://127.0.0.1:8080/x5/UI2/v_9 ... mp.min.js:144:85603) at HTMLAnchorElement.i (http://127.0.0.1:8080/x5/UI2/v_8 ... ore.min.js:65:19604) at HTMLAnchorElement.dispatch (http://127.0.0.1:8080/x5/UI2/v_8 ... ore.min.js:65:54097)
关闭


3)我现在的需求是:需要使用用户名和密码登录,点击登录时去统一用户中心去验证,统一用户中心验证成功后我再调用x5的this.login()登录,这时仅验证登陆名是否在系统库中。
      Model.prototype.loginClick = function(event){
                var checkWS  = this.checkWebService();
                //如果WebService验证通过,进行登录,否则弹出信息提示框
                if(checkWS){
                        this.login();                       
                }else{
                        this.showMD("您输入的用户名或密码有误,请重新输入!");
                }       
                return false;       
        };

4) 您在2楼中说的”在登录的时候可以不做密码校验可以用ntLogin这个action去登录“这种如何替换action,能具体点吗?
谢谢
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-11-23 17:44:53 | 显示全部楼层
1.把SA_OPOrg中的这个人员的信息和SA_OPPerson 的发一下看看
2.默认的平台的登录,修改这个选项没问题,本地测试过了
已经报错到具体的js中的错误了,跟一下js代码
3.把完整的需求详细描述一下
上面说不用密码的登录,现在又用密码登录,还要有用ntLogin不有密码登录?

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



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

使用道具 举报

26

主题

88

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
QQ
 楼主| 发表于 2016-11-23 18:04:25 | 显示全部楼层
jishuang 发表于 2016-11-23 17:44
1.把SA_OPOrg中的这个人员的信息和SA_OPPerson 的发一下看看
2.默认的平台的登录,修改这个选项没问题,本 ...

需求:我现在使用x5平台的登陆页面,输入用户名和密码后点击登陆,x5中会在loginClick事件中调用this.login()方法,我在调用this.login()方法之前做一个用户校验,即通过WebService去统一用户中心做校验,如果用户中心那边校验通过,我再使用x5进行校验,即执行this.login()方法Model.prototype.loginClick = function(event){
                var checkWS  = this.checkWebService();
                //如果WebService验证通过,进行登录,否则弹出信息提示框
                if(checkWS){
                        this.login();                       
                }else{
                        this.showMD("您输入的用户名或密码有误,请重新输入!");
                }       
                return false;       
        };
1)两次校验的原因:
因为项目是系统集成,多个子系统共用一个用户中心,一个用户在用户中心存在但不一定在我现在开发的这个子系统存在,因此我在用户中心校验完毕后还需要在x5 系统库中做一次校验,

2)在x5库中只验证登录名不验证密码的原因:
如果用户在用户中心更改了自己的密码,而x5的sa_opperson中的信息没有更改,那就会产生通过用户中心验证但无法通过x5验证,因此,x5中用户验证时我只想通过登录名去验证。
请问这种情况如何处理?不知道我现在的描述您能听懂吗谢谢


回复 支持 反对

使用道具 举报

26

主题

88

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
QQ
 楼主| 发表于 2016-11-23 20:08:55 | 显示全部楼层
本帖最后由 longyu065 于 2016-11-23 20:25 编辑
longyu065 发表于 2016-11-23 18:04
需求:我现在使用x5平台的登陆页面,输入用户名和密码后点击登陆,x5中会在loginClick事件中调用this.log ...

晚上老大重新明确了一下, 是这样的需求:1)用户登录后直接去用户中心验证,通过SSO验证后获取返回值,返回值中包括sa_opperson表中的scode值,通过这个值去x5系统中做验证,验证通过后直接进入x5系统,实现和x5自身登录一样的效果,【换种说法就使用x5开发的系统,但跳过x5的用户验证,使用sso验证】
2)x5开发的系统中的用户存在多岗的情况,想实现在x5中用户通过sso验证后登录系统时先选定一个岗位然后再进入主页面,该用户使用该岗位的角色权限进行相关的操作。
请问这种情况该如何解决?谢谢




回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-11-24 10:40:37 | 显示全部楼层
1.做第三方校验的时候不推荐在js中去调用,可以在平台的loginAction执行前事件中去调用,然后按照我4楼发的修改就可以
  把返回的scode的值做用户名传递给后端登录即可
2.现在版本没有这样的案例
之前的版本http://bbs.wex5.com/forum.php?mo ... 58332&pid=165061098中提供了案例,在登录页面中把岗位列出来,把选择的sFID的值拼上

可以/UI2/portal/base/login/login.js中,具体可以再如下的地方拼接
exe.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

26

主题

88

帖子

339

积分

中级会员

Rank: 3Rank: 3

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

4楼的方法中也说了留下一个漏洞,能不能实现只在sso验证,然后拿着sso的验证返回的结果跳过x5的登录直接进入x5系统,这样系统的安全性就高了,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 16:00 , Processed in 0.087030 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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