微信小程序 Session 失效

微信小程序 Session 失效

微信小程序,前端請求後端,中間多了個微信服務器,所以請求的流程就是 頁面--微信服務器--目標服務器 這就導致了一個問題 session 每次請求都是一個新的會話

解決辦法 :

  項目搭建使用的是 maven + spring boot + spring data jpa 

@WebListener
public class MySessionListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        MySessionContext.addSession(httpSessionEvent.getSession());
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        HttpSession session = httpSessionEvent.getSession();
        MySessionContext.delSession(session);
    }
}
public class MySessionContext {
    
    private static HashMap<String,Object> sessionIdMap = new HashMap<String,Object>();

    public static synchronized void addSession(HttpSession session) {
        if (session != null) {
            sessionIdMap.put(session.getId(), session);
        }
    }

    public static synchronized void delSession(HttpSession session) {
        if (session != null) {
            sessionIdMap.remove(session.getId());
        }
    }

    public static synchronized HttpSession getSession(String session_id) {
        if (sessionIdMap.containsKey(session_id)){
            return (HttpSession) sessionIdMap.get(session_id);
        }else{
            return null;
        }
    }
}

在需要用到session的地方將session保存

                    //存sessionId
                    final String sessionId = request.getSession().getId();
                    //存session
                    MySessionContext.addSession(request.getSession());

將sessionId返回到前臺 在之後交互的時候 將sessionId發到後臺 

                //根據sessionId獲取session
                HttpSession session = MySessionContext.getSession(sessionId);

這就可以獲取到之前的session 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章