#ifndef __SESSIONSTORE_H__ #define __SESSIONSTORE_H__ #include #include #include namespace Older { struct SessionData { int userId; std::string refreshToken; std::chrono::system_clock::time_point expireTime; std::chrono::system_clock::time_point refreshTime; }; class SessionStore { public: SessionStore(boost::asio::io_context &ioContext); std::string addSession(int userId, std::chrono::minutes sessionLifetime = std::chrono::minutes{1440}, // 24小时 std::chrono::minutes refreshInterval = std::chrono::minutes{15}); void removeSession(const std::string &token); std::pair validateAndRefresh(const std::string &token); SessionData at(const std::string &token); protected: void startCleanupTask(); void cleanupExpiredSessions(); private: boost::asio::io_context &m_ioContext; boost::asio::steady_timer m_cleanupTimer; std::shared_mutex m_mutex; std::unordered_map m_sessions; std::unordered_map m_refreshMap; }; } // namespace Older #endif // __SESSIONSTORE_H__