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

QQ登录

只需一步,快速开始

查看: 5898|回复: 2

[分享] 分享如何判断用户登录密码错误,做安全控制

  [复制链接]

6

主题

295

帖子

988

积分

高级会员

Rank: 4

积分
988
发表于 2017-6-14 17:56:01 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
本帖最后由 milan 于 2017-6-14 17:55 编辑

1、打开/BIZ/SA/OPM/system/system.process.m,给loginAction加一个before事件
2、事件代码
  1.         public static void systemProcessBeforeLoginAction() throws Exception {
  2.                 String name = (String) ContextHelper.getActionContext().getParameter("name");
  3.                 String pwd = (String) ContextHelper.getActionContext().getParameter("pwd");
  4.                 java.lang.System.out.println("*****************************");
  5.                 // 用户名
  6.                 java.lang.System.out.println(name);
  7.                 // 密码
  8.                 java.lang.System.out.println(pwd);
  9.                 // 这里要做个数据转换
  10.                 pwd = OrgUtils.saltPassword(pwd);
  11.                 // 这个就是和数据库里应该一致的密码了
  12.                 java.lang.System.out.println(pwd);
  13.                
  14.                 Map<String, Object> params = new HashMap<String, Object>();
  15.                 params.put("name", name);
  16.                 // 用户名要同时判断sLoginName和sCode
  17.                 Table t = KSQL.select("SELECT p.* FROM SA_OPPerson p WHERE p.sLoginName = :name or p.sCode = :name ", params, "/system/data", null);
  18.                 // 如果用户名错误,t.size == 0
  19.                 if (t.size() > 0) {
  20.                         Row r = t.iterator().next();
  21.                         // 拿到数据库里的密码
  22.                         String pwdData = r.getString("sPassword");
  23.                         java.lang.System.out.println(pwdData);
  24.                         
  25.                         // 开启自定义事务,否则登录失败默认事务会回滚
  26.                         Transaction tran = new Transaction();
  27.                         try {
  28.                                 tran.begin();
  29.                                 try {
  30.                                         // 这里可以获取jdbc connection
  31.                                         java.sql.Connection conn = tran.getConnection("/system/data");
  32.                                         // 或者用KSQL, 最后一个参数指定Transaction事务对象
  33.                                         KSQL.executeUpdate("UPDATE ...", params, "/system/data", null, tran);

  34.                                         // 后续逻辑......
  35.                                        
  36.                                         tran.commit();
  37.                                 } catch(Exception e) {
  38.                                         tran.rollback();
  39.                                         throw e;
  40.                                 }
  41.                         } finally {
  42.                                 tran.closeConnections();
  43.                         }
  44.                 }
  45.         }
复制代码



动脑不费电

论坛不认识milan,学会X5也枉然

41

主题

837

帖子

2271

积分

金牌会员

搬砖工

Rank: 6Rank: 6

积分
2271
QQ
发表于 2017-7-4 11:20:58 | 显示全部楼层
论坛不认识milan,x5也玩的很6
Wex5开发者,欢迎互相交流学习
交流群:30057529


我要成为代码女神
回复 支持 反对

使用道具 举报

33

主题

373

帖子

916

积分

高级会员

Rank: 4

积分
916
QQ
发表于 2019-4-29 12:31:59 | 显示全部楼层
学习学习
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-18 08:43 , Processed in 0.054540 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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