main
HuangHai 2 months ago
parent 44a905edc6
commit 768251720d

@ -3,8 +3,10 @@ package com.dsideal.Sso.Controller;
import java.util.Map;
import java.util.UUID;
import com.dsideal.Sso.Interceptor.EmptyInterface;
import com.dsideal.Sso.Util.LoginLogUtil;
import org.apache.commons.lang3.StringUtils;
import com.jfinal.aop.Before;
import com.jfinal.ext.interceptor.POST;
import com.alibaba.fastjson.JSONObject;
import com.dsideal.Sso.Util.CommonUtil;
@ -18,57 +20,33 @@ public class AppLoginController extends Controller {
/**
* app
*/
public void doLogin() {
@Before({POST.class})
@EmptyInterface({"userName", "passWord"})
public void doLogin(String userName, String passWord) {
JSONObject resultJson = new JSONObject();
String userName = getPara("username");
String passWord = getPara("password");
try {
if (StringUtils.isBlank(userName)) {
resultJson.put("success", false);
resultJson.put("msg", "用户名不允许为空!");
renderJson(resultJson);
}
if (StringUtils.isBlank(passWord)) {
resultJson.put("success", false);
resultJson.put("msg", "密码不允许为空!");
renderJson(resultJson);
}
// 密码进行ldap算法的md5加密
LdapPassWordEncoder passEncode = new LdapPassWordEncoder();
String passwordEncode = passEncode.getLdapPassword(passWord);
//Map loginMap = Login.dao.getLoginInfoByUserName(userName);
Map loginMap = CommonUtil.getLoginRouteMap(userName);
if (loginMap == null || !passwordEncode.equals(loginMap.get("password").toString())) {
resultJson.put("success", false);
resultJson.put("msg", "用户名或密码错误!");
renderJson(resultJson);
}
String sessionId = UUID.randomUUID().toString();
SsoLoginHelper.login(sessionId, loginMap);
resultJson.put("success", true);
resultJson.put("sessionId", sessionId);
resultJson.put("personId", loginMap.get("person_id").toString());
resultJson.put("personName", loginMap.get("person_name").toString());
resultJson.put("bureauId", loginMap.get("bureau_id").toString());
resultJson.put("identityId", loginMap.get("identity_id").toString());
//记录人员登录日志
LoginLogUtil.WriteLoginLog(loginMap.get("identity_id").toString(), loginMap.get("person_id").toString(), 2, LoginLogUtil.getIpAddr(getRequest()));
renderJson(resultJson);
} catch (Exception e) {
// 密码进行ldap算法的md5加密
LdapPassWordEncoder passEncode = new LdapPassWordEncoder();
String passwordEncode = passEncode.getLdapPassword(passWord);
Map loginMap = CommonUtil.getLoginRouteMap(userName);
if (loginMap == null || !passwordEncode.equals(loginMap.get("password").toString())) {
resultJson.put("success", false);
resultJson.put("msg", "登录异常");
resultJson.put("msg", "用户名或密码错误!");
renderJson(resultJson);
}
String sessionId = UUID.randomUUID().toString();
SsoLoginHelper.login(sessionId, loginMap);
resultJson.put("success", true);
resultJson.put("sessionId", sessionId);
resultJson.put("personId", loginMap.get("person_id").toString());
resultJson.put("personName", loginMap.get("person_name").toString());
resultJson.put("bureauId", loginMap.get("bureau_id").toString());
resultJson.put("identityId", loginMap.get("identity_id").toString());
//记录人员登录日志
LoginLogUtil.WriteLoginLog(loginMap.get("identity_id").toString(), loginMap.get("person_id").toString(), 2, LoginLogUtil.getIpAddr(getRequest()));
renderJson(resultJson);
}
/**
@ -76,7 +54,6 @@ public class AppLoginController extends Controller {
*/
public void loginCheck() {
JSONObject resultJson = new JSONObject();
//boolean flag = CommonUtil.getVerifyRequestIpRegister(getRequest());
boolean flag = true;
if (flag) {
String sessionId = getPara("sessionId");
@ -120,5 +97,4 @@ public class AppLoginController extends Controller {
String sessionId = getPara("sessionId");
SsoLoginHelper.logout(sessionId);
}
}

@ -1,44 +1,28 @@
package com.dsideal.Sso.Controller;
import org.apache.commons.lang3.StringUtils;
import com.dsideal.Sso.Interceptor.EmptyInterface;
import com.jfinal.aop.Before;
import com.jfinal.ext.interceptor.GET;
import com.alibaba.fastjson.JSONObject;
import com.dsideal.Sso.Model.Login;
import com.jfinal.core.Controller;
public class CommomController extends Controller{
/**
* keyvalue
*/
public void getGlobalValueByKey() {
JSONObject resultJson = new JSONObject();
try {
String key = getPara("key");
if (StringUtils.isBlank(key)) {
resultJson.put("success", false);
resultJson.put("msg", "key不允许为空");
renderJson(resultJson);
return;
}
String[] keys = key.split(",");
for (int i=0;i<keys.length;i++)
{
String _key = keys[i];
String _value = Login.dao.getGlobalValueByKey(_key);
resultJson.put(_key, _value);
}
resultJson.put("success", true);
renderJson(resultJson);
return;
} catch (Exception e) {
resultJson.put("success", false);
resultJson.put("msg", "获取数据异常!");
renderJson(resultJson);
return;
}
}
public class CommomController extends Controller {
/**
* keyvalue
*/
@Before({GET.class})
@EmptyInterface({"key"})
public void getGlobalValueByKey(String key) {
JSONObject resultJson = new JSONObject();
String[] keys = key.split(",");
for (int i = 0; i < keys.length; i++) {
String _key = keys[i];
String _value = Login.dao.getGlobalValueByKey(_key);
resultJson.put(_key, _value);
}
resultJson.put("success", true);
renderJson(resultJson);
}
}

@ -1,281 +0,0 @@
package com.dsideal.Sso.Controller;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import javax.servlet.http.HttpServletResponse;
import com.dsideal.Sso.Util.*;
import org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.dsideal.Sso.Model.Login;
import com.jfinal.core.Controller;
import com.jfinal.kit.PropKit;
public class ThirdLoginController extends Controller {
/**
* QQ
*/
public void qqLogin() {
HttpServletResponse response = getResponse();
JSONObject resultJson = new JSONObject();
try {
String qqCode = getPara("code");
String QqOpenId = ThirdUtil.getQqOpenId(qqCode);
Map loginMap = Login.dao.getLoginInfoByQqOpenId(QqOpenId);
if (loginMap == null) {
resultJson.put("success", false);
resultJson.put("openid", QqOpenId);
resultJson.put("msg", "需要绑定用户!");
renderJson(resultJson);
return;
}
String sessionId = UUID.randomUUID().toString();
loginMap.put("login_type", "1");
SsoLoginHelper.login(response, sessionId, loginMap);
resultJson.put("success", true);
resultJson.put("sessionId", sessionId);
resultJson.put("personId", loginMap.get("person_id").toString());
resultJson.put("personName", loginMap.get("person_name").toString());
//记录人员登录日志
LoginLogUtil.WriteLoginLog(loginMap.get("identity_id").toString(), loginMap.get("person_id").toString(), 3, LoginLogUtil.getIpAddr(getRequest()));
renderJson(resultJson);
} catch (Exception e) {
resultJson.put("success", false);
resultJson.put("msg", "登录异常,请重试!");
renderJson(resultJson);
}
}
/**
*
*/
public void wxLogin() {
HttpServletResponse response = getResponse();
JSONObject resultJson = new JSONObject();
try {
String wxCode = getPara("code");
String wxOpenId = ThirdUtil.getWxOpenId(wxCode);
Map loginMap = Login.dao.getLoginInfoByWxOpenId(wxOpenId);
if (loginMap == null) {
resultJson.put("success", false);
resultJson.put("openid", wxOpenId);
resultJson.put("msg", "需要绑定用户!");
renderJson(resultJson);
return;
}
String sessionId = UUID.randomUUID().toString();
loginMap.put("login_type", "1");
SsoLoginHelper.login(response, sessionId, loginMap);
resultJson.put("success", true);
resultJson.put("sessionId", sessionId);
resultJson.put("personId", loginMap.get("person_id").toString());
resultJson.put("personName", loginMap.get("person_name").toString());
renderJson(resultJson);
} catch (Exception e) {
resultJson.put("success", false);
resultJson.put("msg", "登录异常,请重试!");
renderJson(resultJson);
}
}
/**
*
*/
public void bindUser() {
JSONObject resultJson = new JSONObject();
String openId = getPara("openId");
try {
openId = AesUtil.aesDecrypt(openId);
} catch (Exception e) {
e.printStackTrace();
resultJson.put("success", false);
resultJson.put("msg", "绑定用户异常!");
renderJson(resultJson);
return;
}
String personId = getPara("personId");
try {
personId = AesUtil.aesDecrypt(personId);
} catch (Exception e) {
e.printStackTrace();
resultJson.put("success", false);
resultJson.put("msg", "绑定用户异常!");
renderJson(resultJson);
return;
}
// 1:QQ 2:微信
String typeId = getPara("typeId");
try {
typeId = AesUtil.aesDecrypt(typeId);
} catch (Exception e) {
e.printStackTrace();
resultJson.put("success", false);
resultJson.put("msg", "绑定用户异常!");
renderJson(resultJson);
return;
}
try {
Login.dao.bindUser(openId, personId, typeId);
HttpServletResponse response = getResponse();
Map loginMap = new HashMap();
// 1:QQ 2:微信
if (typeId.equals("1")) {
loginMap = Login.dao.getLoginInfoByQqOpenId(openId);
} else {
loginMap = Login.dao.getLoginInfoByWxOpenId(openId);
}
if (loginMap == null) {
resultJson.put("success", false);
resultJson.put("msg", "绑定用户异常!");
renderJson(resultJson);
return;
}
String sessionId = UUID.randomUUID().toString();
loginMap.put("login_type", "1");
SsoLoginHelper.login(response, sessionId, loginMap);
resultJson.put("success", true);
resultJson.put("sessionId", sessionId);
resultJson.put("personId", loginMap.get("person_id").toString());
resultJson.put("personName", loginMap.get("person_name").toString());
renderJson(resultJson);
} catch (Exception e) {
e.printStackTrace();
resultJson.put("success", false);
resultJson.put("msg", "绑定用户异常!");
renderJson(resultJson);
return;
}
}
/**
*
*/
public void getUserInfoByUserNamePwd() {
HttpServletResponse response = getResponse();
JSONObject resultJson = new JSONObject();
String userName = getPara("userName");
String passWord = getPara("passWord");
String typeId = getPara("typeId");
try {
typeId = AesUtil.aesDecrypt(typeId);
} catch (Exception e) {
e.printStackTrace();
resultJson.put("success", false);
resultJson.put("msg", "数据异常!");
renderJson(resultJson);
return;
}
try {
if (StringUtils.isBlank(userName)) {
resultJson.put("success", false);
resultJson.put("msg", "用户名不允许为空!");
renderJson(resultJson);
return;
}
if (StringUtils.isBlank(passWord)) {
resultJson.put("success", false);
resultJson.put("msg", "密码不允许为空!");
renderJson(resultJson);
return;
} else {
try {
passWord = AesUtil.aesDecrypt(passWord);
} catch (Exception e) {
e.printStackTrace();
resultJson.put("success", false);
resultJson.put("msg", "数据异常!");
renderJson(resultJson);
return;
}
}
// 密码进行ldap算法的md5加密
LdapPassWordEncoder passEncode = new LdapPassWordEncoder();
String passwordEncode = passEncode.getLdapPassword(passWord);
Map loginMap = Login.dao.getLoginInfoByUserName(userName);
if (loginMap == null || !passwordEncode.equals(loginMap.get("password").toString())) {
resultJson.put("success", false);
resultJson.put("msg", "用户名或密码错误!");
renderJson(resultJson);
return;
}
if (loginMap.get("identity_id").toString().equals("1") || loginMap.get("identity_id").toString().equals("2") || loginMap.get("identity_id").toString().equals("3") || loginMap.get("identity_id").toString().equals("4")) {
resultJson.put("success", false);
resultJson.put("msg", "管理员不允许绑定!");
renderJson(resultJson);
return;
}
if (typeId.equals("1")) {
if (!loginMap.get("qq_openid").toString().equals("-1")) {
resultJson.put("success", false);
resultJson.put("msg", "该用户已绑定QQ请先解除绑定");
renderJson(resultJson);
return;
}
} else {
if (!loginMap.get("wx_openid").toString().equals("-1")) {
resultJson.put("success", false);
resultJson.put("msg", "该用户已绑定微信,请先解除绑定!");
renderJson(resultJson);
return;
}
}
String sessionId = UUID.randomUUID().toString();
SsoLoginHelper.login(response, sessionId, loginMap);
resultJson.put("success", true);
resultJson.put("sessionId", sessionId);
resultJson.put("personId", loginMap.get("person_id").toString());
resultJson.put("personName", loginMap.get("person_name").toString());
renderJson(resultJson);
} catch (Exception e) {
e.printStackTrace();
resultJson.put("success", false);
resultJson.put("msg", "绑定账户异常!");
renderJson(resultJson);
return;
}
}
/**
* QQ
*/
public void getQqWxRedirectUrl() {
JSONObject resultJson = new JSONObject();
String defaultRedirectUrl = PropKit.get("qq.wx.redirect.url");
if (defaultRedirectUrl != null) {
resultJson.put("success", true);
resultJson.put("defaultRedirectUrl", defaultRedirectUrl);
} else {
resultJson.put("success", false);
}
renderJson(resultJson);
}
}

@ -0,0 +1,48 @@
package com.dsideal.Sso.Interceptor;
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;
import com.dsideal.Sso.Util.CommonUtil;
/**
*
*
* @author Administrator
*/
public class EmptyInterceptor implements Interceptor {
@Override
public void intercept(Invocation inv) {
EmptyInterface annotation = inv.getMethod().getAnnotation(EmptyInterface.class);
if (annotation != null) {
noEmpty(annotation, inv);
} else {
inv.invoke();
}
}
public void noEmpty(EmptyInterface annotation, Invocation inv) {
Controller con = inv.getController();
String header = con.getHeader("Content-Type"); //取出head头
if (header != null && header.indexOf("multipart/form-data") != -1) { //判断是否是form-data
inv.invoke();
}
String[] value = annotation.value();
boolean isTrue = true;
String key = "";
for (String v : value) {
String parameter = con.getPara(v);
if (parameter == null || parameter.trim().length() == 0) {
isTrue = false;
key = v;
break;
}
}
if (isTrue) {
inv.invoke();
} else {
con.renderJson(CommonUtil.returnMessageJson(false, "传入的" + key + "参数为空!"));
}
}
}

@ -0,0 +1,10 @@
package com.dsideal.Sso.Interceptor;
import java.lang.annotation.*;
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface EmptyInterface {
String[] value();
}

@ -8,11 +8,40 @@ import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.alibaba.fastjson.JSONObject;
import com.dsideal.Sso.Model.Login;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.Record;
public class CommonUtil {
/**
* json
*
* 2018-11-06
*
* @param result
* @param message
*/
public static Map<String, Object> returnMessageJson(boolean result, String message) {
Map<String, Object> map = new HashMap<>();
map.put("success", result);
map.put("message", message);
return map;
}
public static Map<String, Object> returnMessageJson(boolean result, JSONObject jo) {
Map<String, Object> map = new HashMap<>();
map.put("success", result);
map.put("result", jo);
return map;
}
public static Map<String, Object> returnMessageJson(boolean result, List<Record> list) {
Map<String, Object> map = new HashMap<>();
map.put("success", result);
map.put("result", list);
return map;
}
/**
* Map
*

@ -2,6 +2,7 @@ package com.dsideal;
import Plugin.LogBackLogFactory;
import cn.hutool.core.io.FileUtil;
import com.dsideal.Sso.Interceptor.EmptyInterceptor;
import com.dsideal.Sso.Util.YamlProp;
import com.jfinal.config.*;
import com.jfinal.kit.Prop;
@ -13,7 +14,6 @@ import com.jfinal.server.undertow.UndertowServer;
import com.jfinal.template.Engine;
import com.dsideal.Sso.Controller.AppLoginController;
import com.dsideal.Sso.Controller.CommomController;
import com.dsideal.Sso.Controller.ThirdLoginController;
import com.dsideal.Sso.Controller.WebLoginController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -67,7 +67,6 @@ public class SsoApplication extends JFinalConfig {
public void configRoute(Routes me) {
me.add("/", WebLoginController.class);
me.add("/app", AppLoginController.class);
me.add("/third", ThirdLoginController.class);
me.add("/common", CommomController.class);
}
@ -102,7 +101,8 @@ public class SsoApplication extends JFinalConfig {
*
*/
public void configInterceptor(Interceptors me) {
//注册非空拦截器
me.add(new EmptyInterceptor());
}
/**

Loading…
Cancel
Save