什么是查找会话cookie的基本控制器,如果存在,则设置User对象

时间:2010-06-21 18:10:37

标签: python pylons

我想为我的wep应用程序使用自定义基本控制器,该应用程序具有User对象作为属性,以及布尔值IsLoggedIn属性。

在基本控制器的构造函数中(或者我需要在其中执行此操作的任何事件)我想查找会话cookie(如果存在),加载用户并设置User对象并将IsLoggedIn属性设置为true

我对挂架很新,所以任何指导都会受到赞赏。

2 个答案:

答案 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进行数据库后端,但是你明白了这一点