예제 #1
0
파일: auth.py 프로젝트: buhtigexa/Nerit
def save(cookies):
    now = int(time()) // 60
    ctime_str = '%x' % local.ctime
    mtime_str = '%x' % now
    if local.user is not None or local.session:
        if local.user and local.longlife_session:
            if not local.longlife_key: set_longlife_session()
            longlife_key = local.longlife_key or ''
        else: longlife_key = ''

        info = local.user, local.session.__dict__
        data = dumps(info)
        if storage is False: data = 'C' + data  # "C" stands for "C"ookies-only
        else:
            session_id = storage.put(data, local.ctime, now, local.session_id)
            if session_id is None: session_id = ''  # What is the best way to handle storage errors?
            elif local.session_id is not None: assert session_id == local.session_id
            data = 'S' + session_id  # "S" stands for "S"torage
        hashobject = get_hashobject(now)
        hashobject.update(ctime_str)
        hashobject.update(data)
        hashobject.update(local.user_agent or '')
        if local.remember_ip: hashobject.update(local.ip or '')
        data_str = b64encode(data)
        hash_str = b64encode(hashobject.digest())
        cookie_value = ':'.join([ ctime_str, mtime_str, data_str, hash_str, longlife_key ])
    else:
        cookie_value = ''
        if storage and local.session_id: storage.delete(local.session_id)
    if cookie_value != local.cookie_value:
        max_time = (options.MAX_LONGLIFE_SESSION+1)*24*60*60
        httputils.set_cookie(cookies, options.COOKIE_NAME, cookie_value, max_time, max_time,
                            options.COOKIE_PATH, options.COOKIE_DOMAIN, http_only=True)
예제 #2
0
def save(cookies):
    now = int(time()) // 60
    ctime_str = '%x' % local.ctime
    mtime_str = '%x' % now
    if local.user is not None or local.session:
        if local.user and local.longlife_session:
            if not local.longlife_key: set_longlife_session()
            longlife_key = local.longlife_key or ''
        else: longlife_key = ''

        info = local.user, local.session.__dict__
        data = dumps(info)
        if storage is False: data = 'C' + data  # "C" stands for "C"ookies-only
        else:
            session_id = storage.put(data, local.ctime, now, local.session_id)
            if session_id is None: session_id = ''  # What is the best way to handle storage errors?
            elif local.session_id is not None: assert session_id == local.session_id
            data = 'S' + session_id  # "S" stands for "S"torage
        hashobject = get_hashobject(now)
        hashobject.update(ctime_str)
        hashobject.update(data)
        hashobject.update(local.user_agent or '')
        if local.remember_ip: hashobject.update(local.ip or '')
        data_str = b64encode(data)
        hash_str = b64encode(hashobject.digest())
        cookie_value = ':'.join([ ctime_str, mtime_str, data_str, hash_str, longlife_key ])
    else:
        cookie_value = ''
        if storage and local.session_id: storage.delete(local.session_id)
    if cookie_value != local.cookie_value:
        max_time = (options.MAX_LONGLIFE_SESSION+1)*24*60*60
        httputils.set_cookie(cookies, options.COOKIE_NAME, cookie_value, max_time, max_time,
                            options.COOKIE_PATH, options.COOKIE_DOMAIN, http_only=True)
예제 #3
0
파일: web.py 프로젝트: buhtigexa/Nerit
def set_cookie(name,
               value,
               expires=None,
               max_age=None,
               path=None,
               domain=None,
               secure=False,
               http_only=False,
               comment=None,
               version=None):
    httputils.set_cookie(local.response.cookies, name, value, expires, max_age,
                         path, domain, secure, http_only, comment, version)
예제 #4
0
파일: web.py 프로젝트: buhtigexa/Nerit
def set_cookie(name, value, expires=None, max_age=None, path=None, domain=None,
               secure=False, http_only=False, comment=None, version=None):
    httputils.set_cookie(local.response.cookies,
                        name, value, expires, max_age, path, domain, secure, http_only, comment, version)