GAE python 中的“记住我”选项

问题描述 投票:0回答:2

我正在开发一个项目,其中我正在开发注册/登录模块。我已经在 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',
}

请帮助我。

python google-app-engine webapp2
2个回答
1
投票

首先,如果您不知道会话和 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', '')

我强烈建议您阅读这篇文章,它已经彻底解释了这些内容。


0
投票

Webapp2 支持“记住”选项作为

webapp2_extras.auth.Auth
的一部分。当用户使用
get_user_by_password
登录时,请传递
remember=True

这记录在https://webapp2.readthedocs.io/en/latest/api/webapp2_extras/auth.html#webapp2_extras.auth.Auth.get_user_by_password

© www.soinside.com 2019 - 2024. All rights reserved.