许鹏程
2023-05-24 34ff70bc904e68548b5996561d5da52a67a46d24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package com.product.admin.controller;
 
import org.apache.commons.lang3.StringUtils;
import com.product.core.cache.DataPoolCacheImpl;
import com.product.core.config.CoreConst;
import com.product.core.controller.support.AbstractBaseController;
import com.product.core.entity.RequestParameterEntity;
import com.product.core.exception.BaseException;
import com.product.module.sys.config.SystemErrorCode;
import com.product.module.sys.version.ApiVersion;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * 用户结束使用系统
 * 退出系统清除用户信息
 */
@RequestMapping
@Controller
public class LogoutController extends AbstractBaseController {
 
 
    /**
     * 退出登录
     */
    @RequestMapping(path = "/logout", method = RequestMethod.POST)
    @ResponseBody
    public String logout(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
 
        String accessToken = null;
        Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
        if (bean != null) {
            RequestParameterEntity reqp = (RequestParameterEntity) bean;
            accessToken = reqp.getToken();
        }
        if (StringUtils.isBlank(accessToken)) {
            return this.error(SystemErrorCode.SYSTEM_LOGOUT_PARA_ERROR.getValue(), SystemErrorCode.SYSTEM_LOGOUT_PARA_ERROR.getText());
        } else {
            session.invalidate();
            Cookie[] cookies = request.getCookies();
            for (Cookie cookie : cookies) {
                cookie.setMaxAge(0);
                cookie.setPath("/");
                response.addCookie(cookie);
            }
            try {
                //退出后清除缓存的中的用户信息
                DataPoolCacheImpl.getInstance().removeSessionUser();
            } catch (BaseException e) {
                return this.error(e);
            }
            return OK();
        }
 
    }
    /**
     * 退出登录
     */
    @RequestMapping(path = "/logout/{version}", method = RequestMethod.POST)
    @ResponseBody
    @ApiVersion(1)
    public String logoutV1(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
 
        String accessToken = null;
        Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
        if (bean != null) {
            RequestParameterEntity reqp = (RequestParameterEntity) bean;
            accessToken = reqp.getToken();
        }
        if (StringUtils.isBlank(accessToken)) {
            return this.error(SystemErrorCode.SYSTEM_LOGOUT_PARA_ERROR.getValue(), SystemErrorCode.SYSTEM_LOGOUT_PARA_ERROR.getText());
        } else {
            session.invalidate();
            Cookie[] cookies = request.getCookies();
            if (cookies != null) {
                for (Cookie cookie : cookies) {
                    cookie.setMaxAge(0);
                    cookie.setPath("/");
                    response.addCookie(cookie);
                }
            }
            try {
                //退出后清除缓存的中的用户信息
                DataPoolCacheImpl.getInstance().removeSessionUser();
            } catch (BaseException e) {
                return this.error(e);
            }
            return OK();
        }
 
    }
 
}