我想为我的wep应用程序使用自定义基本控制器,该应用程序具有User对象作为属性,以及布尔值IsLoggedIn属性。
在基本控制器的构造函数中(或者我需要在其中执行此操作的任何事件)我想查找会话cookie(如果存在),加载用户并设置User对象并将IsLoggedIn属性设置为true
我对挂架很新,所以任何指导都会受到赞赏。
答案 0 :(得分:2)
你也可以使用之前的控制器方法:
class MyControllerWithUserProperty(BaseController):
def __before__(self, action, **params):
# check the cookies
# ...
self.user = <user object>
# set others properties
# ...
答案 1 :(得分:0)
在负责记录用户的代码中,在验证用户名和密码后,您可以在会话中存储用户ID并进行重定向:
session['user_id'] = authenticated_user.id
session.save()
h.redirect_to('/')
然后,在BaseController中。 init 将用户实例分配给控制器的属性,如下所示:
self.user = session.get('user_id') and Session.query(User).get(session['user_id'])
这样,如果用户通过身份验证,则会在self.user中获取其实例。否则self.user将为None。
要注销某人,只需从Pylons会话中删除'user_id':
del session['user_id']
PS:我做了一些假设,比如你正在使用SQLAlchemy进行数据库后端,但是你明白了这一点