我正在开发一个项目,其中我正在开发注册/登录模块。我已经在 webapp2 python 中成功实现了会话。现在我想在登录时实现记住我的功能。我找不到任何可以帮助我的东西。我确实知道我必须设置会话年龄。但是我不知道怎么做。这是我的会话代码。
def dispatch(self):
# Get a session store for this request.
self.session_store = sessions.get_store(request=self.request)
try:
# Dispatch the request.
webapp2.RequestHandler.dispatch(self)
finally:
# Save all sessions.
self.session_store.save_sessions(self.response)
@webapp2.cached_property
def session(self):
# Returns a session using the default cookie key.
return self.session_store.get_session()
配置:
config = {}
config['webapp2_extras.sessions'] = {
'secret_key': 'my-super-secret-key',
}
请帮助我。
首先,如果您不知道会话和 cookie 之间的区别
什么是Cookie? Cookie 是存储在 通过浏览器访问用户的计算机。 Cookie 的常见用途是 身份验证、存储站点首选项、购物车项目,以及 服务器会话识别。
每次用户的网络浏览器与网络服务器交互时,它都会 将 cookie 信息传递给 Web 服务器。仅存储 cookie 与请求的 URL 中的域相关的浏览器将是 发送到服务器。这意味着与以下相关的 cookie www.example.com 不会发送到 www.exampledomain.com。
本质上,cookie 是将一个页面链接到下一个页面的好方法 用于用户与网站或 Web 应用程序的交互。
.
什么是会话?会话可以定义为服务器端存储的 希望在用户的整个过程中持续存在的信息 与网站或网络应用程序的交互。
而不是通过存储大量且不断变化的信息 用户浏览器中的cookies,仅存储唯一标识符 客户端(称为“会话 ID”)。该会话 ID 被传递到 每次浏览器发出 HTTP 请求(即页面 链接或 AJAX 请求)。 Web 应用程序将此会话 ID 与 它是内部数据库并检索存储的变量以供使用 请求的页面。
如果您想实现“记住我”之类的功能,您应该使用 cookie,因为会话中存储的数据不是持久的。
用于在
webapp2
中设置和获取cookie:
response.headers.add_header('Set-Cookie', 'remember_me=%s' % some_hash)
request.cookies.get('remember_me', '')
我强烈建议您阅读这篇文章,它已经彻底解释了这些内容。
Webapp2 支持“记住”选项作为
webapp2_extras.auth.Auth
的一部分。当用户使用 get_user_by_password
登录时,请传递 remember=True
。