package cn.com.usky.iot.controller.login; import cn.com.usky.iot.admin.dao.YtiotTAdminDao; import cn.com.usky.iot.auth.TokenAuthService; import cn.com.usky.utils.ListUtil; import cn.com.usky.utils.MD5Util; import com.alibaba.fastjson.JSONObject; import org.apache.log4j.Logger; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import java.sql.SQLException; import java.util.List; /** * @author laowo * @version v1.0 * @date 2020/11/27 10:00 * @description TODO **/ public class LoginServiceImpl implements LoginService { private TokenAuthService tokenAuthService; public TokenAuthService getTokenAuthService() { return tokenAuthService; } public void setTokenAuthService(TokenAuthService tokenAuthService) { this.tokenAuthService = tokenAuthService; } private static final Logger LOGGER = Logger.getLogger(LoginServiceImpl.class); private HibernateTemplate hibernateTemplate; public HibernateTemplate getHibernateTemplate() { return hibernateTemplate; } public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } private YtiotTAdminDao ytiotTAdminDao; public YtiotTAdminDao getYtiotTAdminDao() { return ytiotTAdminDao; } public void setYtiotTAdminDao(YtiotTAdminDao ytiotTAdminDao) { this.ytiotTAdminDao = ytiotTAdminDao; } /** * 登录 * * @param loginName * @param passWord * @param response * @param request * @return */ @Override public String tologin(String loginName, String passWord, HttpServletResponse response, HttpServletRequest request) { String pwd = null; List userIdList = hibernateTemplate.executeFind(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { String sql = "select UQ_ADMIN_ID from ytiot_t_admin where V_LOGINNAME ='" + loginName + "'"; Query query = session.createSQLQuery(sql); return query.list(); } }); if (ListUtil.isBlank(userIdList)) { JSONObject jsonObject = new JSONObject(); jsonObject.put("Msg", "LOGIN NAME WRONG"); jsonObject.put("ServerName", "www.jd-ioe.com/UskyIoT"); jsonObject.put("check", "true"); jsonObject.put("login", "false"); return jsonObject.toString(); } try { pwd = MD5Util.EncoderByMd5(passWord); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String finalPwd = pwd; List password = hibernateTemplate.executeFind(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { String sql = "select V_ADMIN_NAME,V_PASSWORD from ytiot_t_admin where V_LOGINNAME ='" + loginName + "' and V_PASSWORD='" + finalPwd + "'"; Query query = session.createSQLQuery(sql); return query.list(); } }); if (ListUtil.isBlank(password)) { JSONObject jsonObject = new JSONObject(); jsonObject.put("Msg", "WRONG PASSWORD!!!"); jsonObject.put("ServerName", "www.jd-ioe.com/UskyIoT"); jsonObject.put("check", "true"); jsonObject.put("login", "false"); return jsonObject.toString(); } JSONObject jsonObject = new JSONObject(); jsonObject.put("chk", 1); jsonObject.put("href", "view/mainframe.jsp"); jsonObject.put("login", "true"); jsonObject.put("check", "true"); jsonObject.put("ServerName", "www.jd-ioe.com/UskyIoT"); //Token生成 Long loginTime = System.currentTimeMillis() / 1000; String userId = (String) userIdList.get(0); String token = tokenAuthService.createToken(userId, loginTime); //设置响应token Cookie cookie = new Cookie(Constants.RESPONSE_TOKEN, token); //禁止JS读取cookie cookie.setHttpOnly(true); cookie.setPath(request.getContextPath()); //有效期一个月 cookie.setMaxAge(60 * 60 * 24 * 30); response.addCookie(cookie); return jsonObject.toString(); } @Override public List getObjectByUserId(String userId) { return hibernateTemplate.executeFind(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { String sql = "select UQ_ADMIN_ID from ytiot_t_admin where UQ_ADMIN_ID ='" + userId + "'"; Query query = session.createSQLQuery(sql); return query.list(); } }); } }