2012-07-17 6 views
2

내 애플리케이션의 각 사용자에 대한 설정을 저장해야합니다.통합 로그인을 사용할 때 사용자 설정 저장

사용자를 설정 개체의 부모로 사용하려고했지만 사용자가 키를 가지고 있지 않기 때문에이 작업을 수행 할 수 없습니다. 그런 다음 사용자 속성에 대한 참조가있는 설정 객체에서 인스턴스를 만들었지 만 문서에서 사용자가 전자 메일 주소를 변경하면 UserProperty가 불안정하다고합니다. 그런 다음 StringProperty()에 user_id를 저장하기로 결정했지만 사용자가 OpenId로 로그인하면 user_id 요소는 None입니다.

Google 계정과 open_id 계정 모두에서 작동하는 사용자 개체에 사용자 설정을 연결하는 방법이 있습니까?

답변

0

Google 계정/open_id 계정에 래퍼 클래스를 추가 할 수 없으므로 부모 관계를 사용할 수 있습니까? 뭐 그런 다음 사용자가 자신의 이메일 주소를 변경하려면 이전 이메일로 UserSettings를 검색, 관련 UserWrapper을 삭제하려고

UserWrapper(db.Model): 
    user = db.UserProperty() 

UserSettings(db.Model): 
    ... 

# New User 
user = users.get_current_user() 
new_user_settings = UserSettings(...) 
new_user_wrapper = UserWrapper(key=user.nickname(), 
           parent=new_user_settings, 
           user=user) 

# Login Existing User 
user = users.get_current_user() 
user_wrapper = UserWrapper.get_by_key_name(user.nickname()) 
user_settings = user_wrapper.parent() 

경우 이전과 함께 새로운 이메일 주소와 동료에 대한 새로운 UserWrapper를 만들 사용자 설정.

참고 UserSettings를 UserWrapper의 부모로 만들었습니다. 동일한 계정으로 여러 이메일 주소를 연결하는 것이 중요 할 수 있습니다.

관련 문제