管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-11-17 15375a1d0d07c61c132906ff8da45f67bcd711f6
src/main/java/com/lf/server/service/sys/TokenService.java
@@ -1,5 +1,6 @@
package com.lf.server.service.sys;
import com.lf.server.entity.all.SettingData;
import com.lf.server.entity.sys.LoginEntity;
import com.lf.server.entity.sys.TokenEntity;
import com.lf.server.entity.sys.UserEntity;
@@ -26,9 +27,6 @@
@Service
public class TokenService implements TokenMapper {
    @Autowired
    private RedisService redisService;
    @Autowired
    TokenMapper tokenMapper;
    @Autowired
@@ -37,14 +35,17 @@
    @Autowired
    LoginService loginService;
    @Autowired
    RedisService redisService;
    @Override
    public Integer selectCount(String name, Integer type) {
        return tokenMapper.selectCount(name,type);
        return tokenMapper.selectCount(name, type);
    }
    @Override
    public List<TokenEntity> selectByPage(String name, Integer type, Integer limit, Integer offset) {
        return tokenMapper.selectByPage(name,type, limit, offset);
        return tokenMapper.selectByPage(name, type, limit, offset);
    }
    @Override
@@ -94,32 +95,22 @@
    /**
     * 获取新的令牌实体类
     *
     * @param userid
     * @param req
     * @return
     */
    public TokenEntity getNewToken(int userid, HttpServletRequest req) {
        int duration = 240;
    public TokenEntity getNewToken(UserEntity ue, HttpServletRequest req) {
        TokenEntity te = new TokenEntity();
        te.setToken(WebHelper.getGuid());
        te.setDuration(duration);
        te.setExpire(WebHelper.getTimestamp(duration));
        te.setDuration(SettingData.TOKEN_EXPIRE);
        te.setExpire(WebHelper.getTimestamp(SettingData.TOKEN_EXPIRE));
        te.setType(0);
        te.setIp(WebHelper.getIpAddress(req));
        te.setCreateUser(userid);
        te.setCreateUser(ue.getId());
        te.setUname(ue.getUname());
        return te;
    }
    /**
     * 是/否登录
     *
     * @param req
     * @param res
     * @return
     */
    public Boolean isLogin(HttpServletRequest req, HttpServletResponse res) {
        String token = WebHelper.getToken(req);
@@ -145,10 +136,6 @@
    /**
     * 登出
     *
     * @param token
     * @param req
     * @return
     */
    public Boolean logout(String token, HttpServletRequest req, HttpServletResponse res) {
        TokenEntity te = getEntityByToken(token);
@@ -156,8 +143,8 @@
            return false;
        }
        // 清除Cookie WebHelper.saveCookie(StaticData.TOKEN_COOKIE_KEY, "", 60, res)
        WebHelper.deleteAll(req, res);
        // 清除Cookie
        WebHelper.deleteCookies(req, res);
        // 获取当前用户
        UserEntity ue = getCurrentUser(req);
@@ -167,9 +154,13 @@
        // 清除缓存
        String tokenKey = RedisCacheKey.signTokenKey(token);
        redisService.delete(tokenKey);
        if (redisService.hasKey(tokenKey)) {
            redisService.delete(tokenKey);
        }
        String userKey = RedisCacheKey.signUserKey(te.getToken());
        redisService.delete(userKey);
        if (redisService.hasKey(userKey)) {
            redisService.delete(userKey);
        }
        // db,设置令牌过期
        te.setUpdateUser(ue.getId());
@@ -179,7 +170,7 @@
        }
        // 写日志
        LoginEntity le = loginService.getNewLogin(ue.getId(), 3, req);
        LoginEntity le = loginService.getNewLogin(ue.getId(), 1, 3, 1, req);
        rows = loginService.insertLogin(le);
        return rows > 0;
@@ -187,9 +178,6 @@
    /**
     * 根据令牌获取实体
     *
     * @param token
     * @return
     */
    public TokenEntity getEntityByToken(String token) {
        if (StringHelper.isNull(token)) {
@@ -200,7 +188,7 @@
        // redis
        Object obj = redisService.get(tokenKey);
        if (obj != null && obj instanceof TokenEntity) {
        if (obj instanceof TokenEntity) {
            return (TokenEntity) obj;
        }
@@ -215,10 +203,6 @@
    /**
     * 保存token
     *
     * @param te
     * @param req
     * @param res
     */
    public void saveToken(UserEntity ue, TokenEntity te, HttpServletRequest req, HttpServletResponse res) {
        // 保存至Cookie
@@ -235,9 +219,6 @@
    /**
     * 获取当前用户
     *
     * @param req
     * @return
     */
    public UserEntity getCurrentUser(HttpServletRequest req) {
        String token = WebHelper.getToken(req);
@@ -249,7 +230,7 @@
        // redis
        Object obj = redisService.get(userKey);
        if (obj != null && obj instanceof UserEntity) {
        if (obj instanceof UserEntity) {
            return (UserEntity) obj;
        }
@@ -264,4 +245,37 @@
        return ue;
    }
    /**
     * 设置密码错误缓存
     */
    public void setPwdErrCache(UserEntity ue) {
        String key = RedisCacheKey.signPwdError(ue.getUid());
        Object objCount = redisService.get(key);
        int count = objCount == null ? 1 : (int) objCount + 1;
        redisService.put(key, count, SettingData.PWD_ERR_TIME, TimeUnit.MINUTES);
        // 记录日志
        HttpServletRequest req = WebHelper.getRequest();
        LoginEntity le = loginService.getNewLogin(ue.getId(), 1, 1, 0, req);
        le.setDescr("密码不正确");
        loginService.insertLogin(le);
        if (count >= SettingData.PWD_ERR_COUNT) {
            String token = WebHelper.getToken(req);
            HttpServletResponse res = WebHelper.getResponse();
            logout(token, req, res);
        }
    }
    /**
     * 用户ID是/否禁用
     */
    public boolean isUidDisable(UserEntity ue) {
        String key = RedisCacheKey.signPwdError(ue.getUid());
        Object objCount = redisService.get(key);
        return objCount != null && (int) objCount >= SettingData.PWD_ERR_COUNT;
    }
}