123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- 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;
- }
- }
|