parent
69d22f2c78
commit
0a3542dcac
@ -0,0 +1,107 @@
|
|||||||
|
package com.xxl.job.admin.service;
|
||||||
|
|
||||||
|
import com.xxl.job.admin.core.model.XxlJobUser;
|
||||||
|
import com.xxl.job.admin.core.util.CookieUtil;
|
||||||
|
import com.xxl.job.admin.core.util.I18nUtil;
|
||||||
|
import com.xxl.job.admin.core.util.JacksonUtil;
|
||||||
|
import com.xxl.job.admin.dao.XxlJobUserDao;
|
||||||
|
import com.xxl.job.core.biz.model.ReturnT;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.util.DigestUtils;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.math.BigInteger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xuxueli 2019-05-04 22:13:264
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
public class LoginService {
|
||||||
|
|
||||||
|
public static final String LOGIN_IDENTITY_KEY = "XXL_JOB_LOGIN_IDENTITY";
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private XxlJobUserDao xxlJobUserDao;
|
||||||
|
|
||||||
|
|
||||||
|
private String makeToken(XxlJobUser xxlJobUser){
|
||||||
|
String tokenJson = JacksonUtil.writeValueAsString(xxlJobUser);
|
||||||
|
String tokenHex = new BigInteger(tokenJson.getBytes()).toString(16);
|
||||||
|
return tokenHex;
|
||||||
|
}
|
||||||
|
private XxlJobUser parseToken(String tokenHex){
|
||||||
|
XxlJobUser xxlJobUser = null;
|
||||||
|
if (tokenHex != null) {
|
||||||
|
String tokenJson = new String(new BigInteger(tokenHex, 16).toByteArray()); // username_password(md5)
|
||||||
|
xxlJobUser = JacksonUtil.readValue(tokenJson, XxlJobUser.class);
|
||||||
|
}
|
||||||
|
return xxlJobUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ReturnT<String> login(HttpServletRequest request, HttpServletResponse response, String username, String password, boolean ifRemember){
|
||||||
|
|
||||||
|
// param
|
||||||
|
if (username==null || username.trim().length()==0 || password==null || password.trim().length()==0){
|
||||||
|
return new ReturnT<String>(500, I18nUtil.getString("login_param_empty"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// valid passowrd
|
||||||
|
XxlJobUser xxlJobUser = xxlJobUserDao.loadByUserName(username);
|
||||||
|
if (xxlJobUser == null) {
|
||||||
|
return new ReturnT<String>(500, I18nUtil.getString("login_param_unvalid"));
|
||||||
|
}
|
||||||
|
String passwordMd5 = DigestUtils.md5DigestAsHex(password.getBytes());
|
||||||
|
if (!passwordMd5.equals(xxlJobUser.getPassword())) {
|
||||||
|
return new ReturnT<String>(500, I18nUtil.getString("login_param_unvalid"));
|
||||||
|
}
|
||||||
|
|
||||||
|
String loginToken = makeToken(xxlJobUser);
|
||||||
|
|
||||||
|
// do login
|
||||||
|
CookieUtil.set(response, LOGIN_IDENTITY_KEY, loginToken, ifRemember);
|
||||||
|
return ReturnT.SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* logout
|
||||||
|
*
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
*/
|
||||||
|
public ReturnT<String> logout(HttpServletRequest request, HttpServletResponse response){
|
||||||
|
CookieUtil.remove(request, response, LOGIN_IDENTITY_KEY);
|
||||||
|
return ReturnT.SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* logout
|
||||||
|
*
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public XxlJobUser ifLogin(HttpServletRequest request, HttpServletResponse response){
|
||||||
|
String cookieToken = CookieUtil.getValue(request, LOGIN_IDENTITY_KEY);
|
||||||
|
if (cookieToken != null) {
|
||||||
|
XxlJobUser cookieUser = null;
|
||||||
|
try {
|
||||||
|
cookieUser = parseToken(cookieToken);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logout(request, response);
|
||||||
|
}
|
||||||
|
if (cookieUser != null) {
|
||||||
|
XxlJobUser dbUser = xxlJobUserDao.loadByUserName(cookieUser.getUsername());
|
||||||
|
if (dbUser != null) {
|
||||||
|
if (cookieUser.getPassword().equals(dbUser.getPassword())) {
|
||||||
|
return dbUser;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in new issue