Commit 4f8c9a93 authored by 成亚卿's avatar 成亚卿

Merge remote-tracking branch 'origin/SZDAS_V2.0' into SZDAS_V2.0

parents 6f38b7c6 2bfe1e9d
package com.archser.aserver.controller;
import com.archser.aserver.util.redis.InfoSystem;
import com.archser.aserver.util.redis.InfoUser;
import com.archser.aserver.util.redis.RedisConvert;
import com.jfinal.kit.JsonKit;
import java.math.BigInteger;
import java.util.Date;
import java.util.HashMap;
......@@ -118,7 +122,7 @@ public class IndexController extends Controller {
//校验密码是否符合强度设置
String verify = password;
password = HashKit.sha256(password);
User user = User.dao.template("getUser", username).findFirst();
User user = InfoUser.getUser(username);
if (user == null) {
this.renderJson(Ret.fail("msg", "用户名或密码不存在: " + username));
logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "该用户非本系统用户正在非法登录", app);
......@@ -148,14 +152,14 @@ public class IndexController extends Controller {
// 一旦开启三员 admin用户不能使用
if ("admin".equals(user.getUsername())) {
Integer userCount = Db.queryInt(Db.getSql("hasThreeMemberUsersCount"));
boolean isExistThreeMemberUsers = userCount == null ? false : (userCount > 0 ? true : false);
boolean isExistThreeMemberUsers = userCount != null && (userCount > 0);
if (isExistThreeMemberUsers) {
this.renderJson(Ret.fail("msg", "已开启三员管理,admin失效了。"));
logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:已开启三员管理", app);
return;
}
}
if (Integer.valueOf(user.getLocked()) == 1) {
if (user.getLocked() != null && Integer.parseInt(user.getLocked()) == 1) {
this.renderJson(Ret.fail("msg", "当前账户已被锁定"));
logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:该用户已被锁定", app);
return;
......@@ -163,19 +167,17 @@ public class IndexController extends Controller {
if (!password.equals(user.getPassword())) {
if (this.checkErrorCount(user)) {
this.renderJson(Ret.fail("msg", "您的错误次数已达5次以上,请稍后再试!"));
return;
} else {
int errorCount = permitLoginTimes - (user.getErrorcount() == null ? 0 : user.getErrorcount()) - 1;
if (user.getErrorcount() == 4) {
if (user.getErrorcount() !=null && user.getErrorcount() == 4) {
this.renderJson(Ret.fail("msg", "用户名或密码验证失败,您的账户于两小时后才可登录!"));
return;
} else {
this.renderJson(Ret.fail("msg", "用户名或密码验证失败,您还有" + errorCount + "次机会!"));
logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:密码验证错误",
app);
return;
}
}
return ;
}
Integer errorcount = user.getErrorcount();
if (errorcount != null && errorcount != 0) {
......@@ -197,7 +199,7 @@ public class IndexController extends Controller {
if (!"admin".equals(user.getUsername())) {
Integer noLockedRolesCount = Db.queryInt(Db.getSql("hasNoLockedRolesCount"), user.getUsername());
boolean noLockedRolesFlag = noLockedRolesCount == null ? false : (noLockedRolesCount.intValue() > 0 ? true : false);
boolean noLockedRolesFlag = noLockedRolesCount != null && (noLockedRolesCount > 0);
if (!noLockedRolesFlag) {
this.renderJson(Ret.fail("msg", "拥有的角色全部被锁定,不能登录系统了。"));
logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:该用户拥有的角色全部被锁定",
......@@ -205,7 +207,7 @@ public class IndexController extends Controller {
return;
}
}
System system = System.dao.template("getSystemPrivatekey", app).findFirst();
System system = InfoSystem.getSystem(app);
if (system == null) {
this.renderJson(Ret.fail("msg", "没有找到应用:" + app));
logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:没有找到应用" + app,
......@@ -294,6 +296,7 @@ public class IndexController extends Controller {
}
}
/**
* @Description: 验证密码强度
* @authorAndDate: ChengYaqing create on 2020/10/30 10:38
......
package com.archser.aserver.util.redis;
import com.alibaba.fastjson.JSONObject;
import com.archser.aserver.model.System;
/**
* 获取系统信息 20201126 lidecai
*/
public class InfoSystem {
private static final String _INFO = "_INFO";
private static final String SYSTEM = "SYSTEM_";
/**
* 根据名称获取系统信息
*
* @param systemName
* @return
*/
public static System getSystem(String systemName) {
Object object = RedisConvert.getObject(SYSTEM + systemName + _INFO);
System system = JSONObject.parseObject(JSONObject.toJSONString(object), System.class);
if (system == null || system.getKeyid() == null) {
return getSystemByDatabase(systemName);
}
return system;
}
/**
* 备用方案,从数据库获取
*
* @param systemName
* @return
*/
public static System getSystemByDatabase(String systemName) {
System system = System.dao.template("getSystemPrivatekey", systemName).findFirst();
RedisConvert.saveObject(SYSTEM + systemName + _INFO, system);
return system;
}
}
package com.archser.aserver.util.redis;
import com.alibaba.fastjson.JSONObject;
import com.archser.aserver.model.User;
import java.io.Serializable;
public class InfoUser implements Serializable {
private static final String _INFO = "_INFO";
private static final String USER = "USER_";
/**
* 获取用户信息
*
* @param userName
* @return
*/
public static User getUser(String userName) {
Object object = RedisConvert.getObject(USER + userName + _INFO);
User user = JSONObject.parseObject(JSONObject.toJSONString(object), User.class);
if (user.getId() == null) {
return getUserByDataBase(userName);
}
return user;
}
/**
* 备用方案,从数据库获取用户信息
*
* @param userName
* @return
*/
private static User getUserByDataBase(String userName) {
User user = User.dao.template("getUser", userName).findFirst();
RedisConvert.saveObject(USER + userName + _INFO, user);
return user;
}
}
package com.archser.aserver.util.redis;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.plugin.redis.Redis;
import java.util.Map;
/**
* Redis常用工具类 20201126 lidecai
*/
public class RedisConvert {
/**
* 单独存储对象属性
*
* @param key
* @param attribute
* @param value
*/
public static void saveObjectAttr(String key, String attribute, String value) {
Redis.use().hset(key, attribute, value);
}
/**
* 单独获取对象属性
*
* @param key
* @param attribute
* @return
*/
public static Object getObjectAttr(String key, String attribute) {
return Redis.use().hget(key, attribute);
}
/**
* 存储整个对象
*
* @param key
* @param object
*/
public static void saveObject(String key, Object object) {
Redis.use().hmset(key, objectToMap(object));
}
/**
* 获取整个对象
*
* @param key
* @return
*/
public static Object getObject(String key) {
return Redis.use().hgetAll(key);
}
/**
* 反射获取对象全部属性
*
* @param obj
* @return
*/
public static Map objectToMap(Object obj) {
return JSONObject.parseObject(JSONObject.toJSONString(obj), Map.class);
}
}
......@@ -4,7 +4,7 @@ jdbcUrl=jdbc:dm://39.104.21.218:5236
jdbc.driver=dm.jdbc.driver.DmDriver
user=archser_hywdtest
password=archser_hywdtest
basic.url=http://39.104.174.12:11028
basic.url=http://39.104.21.218:11028
devMode =true
engineDevMode=true
......
......@@ -87,7 +87,7 @@ select * from AS_USER where "USERNAME"=#para(0)
### 获取指定系统私钥
#sql("getSystemPrivatekey")
select "TYPE", KEYID, PRIVATEKEY, URL,TITLE from AS_SYSTEM where "NAME"=#para(0) and rownum =1
select * from AS_SYSTEM where "NAME"=#para(0) and rownum =1
#end
### 获取所有菜单
......
package com.archser;
import com.archser.aserver.model._MappingKit;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
import com.jfinal.plugin.activerecord.dialect.OracleDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.plugin.redis.RedisPlugin;
public class PublicDataSource {
static {
// 初始化配置文件
Prop use = PropKit.use("config-pro.properties");
// 初始化数据库
DruidPlugin dbPlugin = new DruidPlugin(use.get("jdbcUrl"), use.get("user"), use.get("password"), use.get("jdbc.driver"));
dbPlugin.start();
// 初始化 ActiveRecord
ActiveRecordPlugin arp = new ActiveRecordPlugin(dbPlugin);
arp.setShowSql(use.getBoolean("devMode"));
arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));
arp.setDialect(new OracleDialect());
// 添加映射
_MappingKit.mapping(arp);
// 初始化Redis
RedisPlugin redis = new RedisPlugin("redis", use.get("redis.url"), use.get("redis.password"));
redis.start();
}
}
package com.archser.redis;
import com.alibaba.fastjson.JSONObject;
import com.archser.PublicDataSource;
import com.archser.aserver.model.User;
import com.jfinal.plugin.redis.Redis;
import java.util.Map;
public class RedisDataFormat {
static {
new PublicDataSource();
}
public static void main(String[] args) {
Redis.use().hset("USER_INFO","ID","1");
Redis.use().hset("USER_INFO","USERNAME","DAGLY");
Redis.use().hset("USER_INFO","PASSWORD","Admin@123456");
Redis.use().hset("USER_INFO","NAME","档案管理员");
// 测试正常获取
System.err.println(Redis.use().hget("USER_INFO", "USERNAME").toString());
// 测试中文乱码
System.err.println(Redis.use().hget("USER_INFO", "NAME").toString());
// 测试获取整个对象
Map user_info = Redis.use().hgetAll("USER_INFO");
User user = JSONObject.parseObject(JSONObject.toJSONString(user_info), User.class);
System.err.println(user.toString());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment