2011-10-05 4 views
3

비커 암호화 된 쿠키 세션을 사용하는 피라미드 애플리케이션이 있습니다. RequestWithUserAttribute, pyramid.security.authenticated_userid(), remember() 및 forget()을 사용하여 사용자를 기록 할 수 있습니다.비커를 사용하여 피라미드의 익명 쿠키 기반 세션에 값을 저장하는 방법

그러나 대부분의 사용자는 로그인하지 않으며 사용자가 사이트 (자신의 위치 또는 다른 위치)를 지정한 쿠키 (가능한 경우 암호화 됨)에 저장하려는 특정 값이 있습니다. 그 문제에 대한 문자열).

remember() 함수를 사용하여 세션에 대한 주 서버를 설정하는 방법을 찾을 수 없으며 직접 데이터 암호화를 처리하지 않고 자체 Set-Cookie 헤더를 보내지 않으려합니다.

remember(request, principal, *kw) 

을하지만 오류로 나는 계속 실행 여분의 값을 보내려고 할 때 :

난 당신이) (기억 키워드 인수를 전달할 수 있습니다 것으로 나타났습니다.

이상적으로 나는 이런 식으로 뭔가를 기대 :

remember(request, 'public', {'location':request.params.get('location')}) 

이도 올바른 길인가?

답변

3

피라미드 (및 일반적으로)의 세션 및 인증은 서로 다른 개념입니다. 인증 된 사용자를 저장하는 방법을 "세션에있다"는 것을 배우는 많은 사람들이 있지만, 결코 그런 요구 사항이 아닙니다. 세션의 요점은 요청을 통해 사이트 방문자의 임의 데이터를 저장하는 것입니다. 그것은 그들이 로그인했거나 임의의 문자열 일 수 있다는 사실입니다.

요점은 당신이 세션에 임의의 물건을 저장할 수 있다는 것입니다. request.session을 통해 요청 객체에 직접 피라미드 (구성자에서 session_factory를 설정 한 후)에서 사용할 수 있습니다.

request.session['mykey'] = 'some random value' 

인증, 기억/잊어 버림 또는 세션 팩터 리 이외의 다른 것을 사용할 필요가 없습니다.

https://docs.pylonsproject.org/projects/pyramid/en/1.2-branch/narr/sessions.html

+0

요청은 브라우저가 열려있는 한 계속됩니다. 내 설정 값을'session.auto = True'와'session.timeout = 129600'으로 설정했습니다. 사용자가 브라우저 세션에서 계속 로그인 할 수 있으므로 쿠키가 절대적으로 저장되지만 다른 값을 다시로드 할 수는 없습니다. – billymcclure

+1

사용중인 인증 정책을 알려주지 않았습니다. 내가 auth! = sessions라고 말했듯이. 쿠키를 저장하는 다른 인증 정책을 사용하고 있으며 비커 설명서에 따라 세션을 올바르게 구성하지 않은 것 같습니다. –

+0

깨진 링크가 편집되었지만 아무 이유없이 OP가 변경 사항을 되돌 렸습니다. 다시 되돌릴 경우 작동하는 링크는 다음과 같습니다. https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/sessions.html – Efren

관련 문제