__before__ 是 WSGIController 特有的方法,在 Action 执行之前执行, 可以用于初始化变量,以及做权限控制。
BaseController 是所有控制器的基类,在该基类增加授权功能,
会自动为其他控制器所使用。BaseController 的代码在文件 lib/base.py
中。
class BaseController(WSGIController): requires_auth = [] def __before__(self, action): if isinstance(self.requires_auth, bool) and not self.requires_auth: pass elif isinstance(self.requires_auth, (list, tuple)) and \ not action in self.requires_auth: pass else: if 'user' not in session: session['path_before_login'] = request.path_info session.save() return redirect_to(h.url_for(controller='security'))
从BaseController 继承的类,可以设置 requires_auth 来增加授权。 requires_auth 可以为 True 或者是一个包含要进行授权的动作列表。如果需要授权, 会检查 session 中是否包含登录信息否则跳转到登录页面(security控制器)。
Copyright © 2006 WorldHello 开放文档之源 计划 |