【发布时间】:2011-12-26 16:55:02
【问题描述】:
我成功使用 webapp2 可以验证和登录/注销用户,并且我有一个装饰器来知道用户是否已登录并且这有效:
class MyPageHandler(NewBaseHandler):
"""
Only accessible to users that are logged in
"""
@user_required
def get(self):
user = self.auth.get_user_by_session()
self.render_template('mypage.htm', {'user': self.auth.get_user_by_session()})
现在我想添加一些基本的用户名,我怀疑我可能不必继承 webapp2_extras 提供的 User 模型,因为它是一个 Expando 模型。您能告诉我如何添加用户名或使用用户名更新用户吗?我没有尝试,但我相信我可以显示 auth_id 但它与用户名不同?
谢谢
更新
似乎用户模型是一个扩展模型,例如在创建用户时,您“只需添加属性”即可:
username = self.request.POST.get('username')
password = self.request.POST.get('password')
# Passing password_raw=password so password will be hashed
# Returns a tuple, where first value is BOOL. If True ok, If False no new user is created
user = self.auth.store.user_model.create_user(username, password_raw=password)
user.name = username
我没有彻底测试上面的代码,但似乎使用 webapp2 我们不需要子类化 User 类来获得功能。
解决方案/解决方法
class SecureRequestHandler(BaseHandler):
"""
Only accessible to users that are logged in
"""
@user_required
def get(self, **kwargs):
a = self.app.config.get('foo')
auser = self.auth.get_user_by_session()
userid = auser['user_id']
user = auth_models.User.get_by_id(auser['user_id'])
try:
return "Secure zone %s <a href='%s'>Logout</a>" % (user.name, self.auth_config['logout_url'])
except (AttributeError, KeyError), e:
return "Secure zone"
【问题讨论】:
标签: python google-app-engine session webapp2