管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-09-30 ef1f37541b768829ba9b7c8fe771f0633f8a488c
1
已修改3个文件
已删除1个文件
153 ■■■■ 文件已修改
src/main/java/com/lf/server/controller/sys/SignController.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/entity/sys/RedisCacheKey.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/service/data/TokenService.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sys/UserMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/controller/sys/SignController.java
@@ -40,9 +40,13 @@
     * @return String
     */
    @GetMapping({"/", "/toIndex"})
    public ModelAndView toIndex(ModelAndView mv) {
    public ModelAndView toIndex(ModelAndView mv, HttpServletRequest req) {
        mv.setViewName("index");
        mv.addObject("msg", "Hello " + " !");
        UsersEntity ue = tokenService.getCurrentUser(req);
        if (ue != null) {
            mv.addObject("msg", "Hello " + ue.getUname() + " !");
        }
        return mv;
    }
@@ -102,9 +106,57 @@
                return fail("创建令牌信息失败!", null);
            }
            WebHelper.saveToken2Cookie(te.getToken(), req, res);
            tokenService.saveToken(ue, te, req, res);
            return success(te);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
        }
    }
    /**
     * ç™»å‡º
     *
     * @param req
     * @param res
     * @return
     */
    @GetMapping(value = "/logout")
    public ResponseMsg<Object> logout(HttpServletRequest req, HttpServletResponse res) {
        try {
            String token = WebHelper.getToken(req);
            if (StringHelper.isEmpty(token)) {
                return fail("没有检测到令牌", null);
            }
            //...
            Boolean flag = tokenService.isLogin(req, res);
            return success(flag ? "用户已登录" : "用户未登录", flag);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
        }
    }
    /**
     * æ£€æŸ¥ä»¤ç‰Œ
     *
     * @param req
     * @param res
     * @return
     */
    @GetMapping(value = "/check")
    public ResponseMsg<Object> check(HttpServletRequest req, HttpServletResponse res) {
        try {
            String token = WebHelper.getToken(req);
            if (StringHelper.isEmpty(token)) {
                return fail("没有检测到令牌", null);
            }
            //...
            Boolean flag = tokenService.isLogin(req, res);
            return success(flag ? "用户已登录" : "用户未登录", flag);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
        }
@@ -115,7 +167,7 @@
     *
     * @return ResponseMsg<String>
     */
    @GetMapping("/islogin")
    @GetMapping("/isLogin")
    public ResponseMsg<Boolean> isLogin(HttpServletRequest req, HttpServletResponse res) {
        try {
            Boolean flag = tokenService.isLogin(req, res);
src/main/java/com/lf/server/entity/sys/RedisCacheKey.java
@@ -11,7 +11,11 @@
     * @param key
     * @return
     */
    public static String ssoKey(String key) {
    public static String signTokenKey(String key) {
        return "sign:token:" + key;
    }
    public static String signUserKey(String key) {
        return "sign:user:" + key;
    }
}
src/main/java/com/lf/server/service/data/TokenService.java
@@ -1,7 +1,7 @@
package com.lf.server.service.data;
import com.lf.server.entity.data.LoginEntity;
import com.lf.server.entity.data.TokenEntity;
import com.lf.server.entity.data.UsersEntity;
import com.lf.server.entity.sys.RedisCacheKey;
import com.lf.server.helper.StringHelper;
import com.lf.server.helper.WebHelper;
@@ -13,6 +13,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
 * ä»¤ç‰Œè¡¨
@@ -73,6 +74,13 @@
        return tokenMapper.selectTokenAll();
    }
    /**
     * èŽ·å–æ–°çš„ä»¤ç‰Œå®žä½“ç±»
     *
     * @param userid
     * @param req
     * @return
     */
    public TokenEntity getNewToken(int userid, HttpServletRequest req) {
        int duration = 240;
@@ -88,6 +96,13 @@
        return te;
    }
    /**
     * æ˜¯å¦ç™»å½•
     *
     * @param req
     * @param res
     * @return
     */
    public Boolean isLogin(HttpServletRequest req, HttpServletResponse res) {
        String token = WebHelper.getToken(req);
        if (StringHelper.isNull(token)) {
@@ -95,10 +110,69 @@
        }
        // redis
        if (redisService.hasKey(RedisCacheKey.ssoKey(token))) {
        if (redisService.hasKey(RedisCacheKey.signTokenKey(token))) {
            return true;
        }
        return false;
    }
    /**
     * æ ¹æ®ä»¤ç‰ŒèŽ·å–å®žä½“
     *
     * @param token
     * @return
     */
    public TokenEntity getEntityByToken(String token) {
        if (StringHelper.isNull(token)) {
            return null;
        }
        String key = RedisCacheKey.signTokenKey(token);
        Object obj = redisService.get(key);
        if (obj != null && obj instanceof TokenEntity) {
            return (TokenEntity) obj;
        }
        return null;
    }
    /**
     * ä¿å­˜token
     *
     * @param te
     * @param req
     * @param res
     */
    public void saveToken(UsersEntity ue, TokenEntity te, HttpServletRequest req, HttpServletResponse res) {
        // ä¿å­˜è‡³Cookie
        WebHelper.saveToken2Cookie(te.getToken(), req, res);
        // ä»¤ç‰Œä¿å­˜è‡³Redis
        String tokenKey = RedisCacheKey.signTokenKey(te.getToken());
        redisService.put(tokenKey, te, te.getDuration(), TimeUnit.MINUTES);
        String userKey = RedisCacheKey.signUserKey(te.getToken());
        redisService.put(userKey, ue, te.getDuration(), TimeUnit.MINUTES);
    }
    /**
     * èŽ·å–å½“å‰ç”¨æˆ·
     * @param req
     * @return
     */
    public UsersEntity getCurrentUser(HttpServletRequest req) {
        String token = WebHelper.getToken(req);
        if (StringHelper.isEmpty(token)) {
            return null;
        }
        String userKey = RedisCacheKey.signUserKey(token);
        Object obj = redisService.get(userKey);
        if (obj != null && obj instanceof UsersEntity) {
            return (UsersEntity) obj;
        }
        return null;
    }
}
src/main/resources/mapper/sys/UserMapper.xml
ÎļþÒÑɾ³ý