记住我在GAE python中的选项

时间:2016-09-05 15:23:35

标签: python google-app-engine webapp2

我正在开展一个项目,我正在进行注册/登录模块。我已经成功地在webapp2 python中实现了会话。现在我想在登录时实现记住我的功能。我无法找到任何可以帮助我的东西。我知道我必须设定会话年龄。但是我不知道怎么做。这是我的会话代码。

 $ pip install iplib
    Traceback (most recent call last):
     File "/usr/bin/pip", line 9, in <module>
      load_entry_point('pip==8.1.2', 'console_scripts', 'pip')()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 552, i                                                     n load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2672,                                                      in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2345,                                                      in load
    return self.resolve()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2351,                                                      in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/site-packages/pip/__init__.py", line 16, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "/usr/lib/python2.7/site-packages/pip/vcs/subversion.py", line 9, in <mod                                                     ule>
    from pip.index import Link
  File "/usr/lib/python2.7/site-packages/pip/index.py", line 30, in <module>
    from pip.wheel import Wheel, wheel_ext
  File "/usr/lib/python2.7/site-packages/pip/wheel.py", line 39, in <module>
    from pip._vendor.distlib.scripts import ScriptMaker
  File "/usr/lib/python2.7/site-packages/pip/_vendor/distlib/scripts.py", line 1                                                     4, in <module>
    from .compat import sysconfig, detect_encoding, ZipFile
  File "/usr/lib/python2.7/site-packages/pip/_vendor/distlib/compat.py", line 31                                                     , in <module>
    from urllib2 import (Request, urlopen, URLError, HTTPError,
ImportError: cannot import name HTTPSHandler

配置:

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()

请帮帮我。

1 个答案:

答案 0 :(得分:1)

首先,如果你不知道会话和cookie之间的区别

  

什么是 Cookie ? Cookie是存储在a上的一小段文本   用户的浏览器计算机。 Cookie的常见用途是   身份验证,存储网站首选项,购物车项目和   服务器会话识别。

     

每次用户&#39; Web浏览器将与Web服务器进行交互   将cookie信息传递给Web服务器。仅存储cookie   通过与请求的URL中的域相关的浏览器将是   发送到服务器。这意味着与之相关的cookie   www.example.com不会发送到www.exampledomain.com。

     

实质上,cookie是将一个页面链接到下一个页面的好方法   用户与网站或网络应用程序的交互。

  

什么是会话?会话可以定义为服务器端存储   希望在整个用户中持续存在的信息   与网站或Web应用程序的交互。

     

而不是通过存储大量不断变化的信息   用户浏览器中的cookie只存储唯一标识符   客户端(称为&#34;会话ID&#34;)。此会话ID传递给   每次浏览器发出HTTP请求(即页面)时,Web服务器   链接或AJAX请求)。 Web应用程序将此会话ID与   它的内部数据库并检索存储的变量以供使用   请求的页面。

如果你想实现类似&#34的东西;请记住我&#34;你应该使用cookies,因为会话中存储的数据不是持久的。

webapp2中设置和获取Cookie:

response.headers.add_header('Set-Cookie', 'remember_me=%s' % some_hash)

request.cookies.get('remember_me', '')

我强烈建议您阅读已经彻底解释过这些内容的article