10 #ifndef __PION_HTTPCOOKIEAUTH_HEADER__
11 #define __PION_HTTPCOOKIEAUTH_HEADER__
15 #include <boost/random.hpp>
16 #include <pion/PionConfig.hpp>
17 #include <pion/net/HTTPAuth.hpp>
18 #include <pion/PionDateTime.hpp>
45 const std::string& login=
"/login",
46 const std::string& logout=
"/logout",
47 const std::string& redirect=
"");
69 virtual bool handleRequest(HTTPRequestPtr& request, TCPConnectionPtr& tcp_conn);
84 virtual void setOption(
const std::string& name,
const std::string& value);
97 bool processLogin(HTTPRequestPtr& http_request, TCPConnectionPtr& tcp_conn);
105 void handleUnauthorized(HTTPRequestPtr& http_request, TCPConnectionPtr& tcp_conn);
113 void handleRedirection(HTTPRequestPtr& http_request, TCPConnectionPtr& tcp_conn,
114 const std::string &redirection_url,
const std::string &new_cookie=
"",
bool delete_cookie=
false);
122 void handleOk(HTTPRequestPtr& http_request, TCPConnectionPtr& tcp_conn,
123 const std::string &new_cookie=
"",
bool delete_cookie=
false);
134 typedef std::map<std::string, std::pair<PionDateTime, PionUserPtr> > PionUserCache;
137 static const unsigned int CACHE_EXPIRATION;
140 static const unsigned int RANDOM_COOKIE_BYTES;
143 static const std::string AUTH_COOKIE_NAME;
149 std::string m_logout;
152 std::string m_redirect;
155 boost::mt19937 m_random_gen;
158 boost::uniform_int<> m_random_range;
161 boost::variate_generator<boost::mt19937&, boost::uniform_int<> > m_random_die;
167 PionUserCache m_user_cache;
170 mutable boost::mutex m_cache_mutex;