def authenticated(method):"""Decorate methods with this to require that the user be logged in."""@functools.wraps(method)def wrapper(self, *args, **kwargs):if not self.current_user:if self.request.method == "GET":url = self.get_login_url()if "?" not in url:url += "?" + urllib.urlencode(dict(next=self.request.uri))self.redirect(url)returnraise HTTPError(403)return method(self, *args, **kwargs)return wrapper
如果current_user为空就认为没有登陆,而current_user由get_current_user()设定。所以在重载get_current_user()时,如果返回不空,说明用户已经登陆;否则,表示用户尚未登陆。从上面的代码可以看出来,next会记录出错时的uri,登陆之后可供redirect,即self.redirect(self.get_argument('next', 'xxxxx')),其中xxxx一般为/。
2010-07-31
tornado.web.authenticated是怎么判断的?
tornado/web.py:
订阅:
博文评论 (Atom)
没有评论:
发表评论