我可能忽略了一些简单的事情,但我无法让 Cherrypy SessionAuth 工作。
启用调试并且在 cherrypy.session 中没有用户名,SessionAuth 将其放入日志文件中:
[20/Feb/2013:00:58:39] TOOLS.SESSAUTH No username, routing to login_screen with from_page 'http://localhost:8080/'
问题是它没有路由到登录屏幕。它向调用者返回true,调用者继续执行。它还将cherrypy.serving.response.body 设置为呈现到登录页面的html 片段。但是我的调用函数对 response.body 一无所知。
我究竟做错了什么?
下面是来自 root.py 的相关代码:
class MySessionAuth(cptools.SessionAuth):
def check_username_and_password(self, username, password):
users = dict(foo="bar")
if username in users and password == users[username]:
return False
def on_check(self, username):
cherrypy.session['username'] = username
def session_auth(**kwargs):
sa = MySessionAuth()
for k, v in kwargs.items():
setattr(sa, k, v)
return sa.run()
cherrypy.tools.protect = cherrypy._cptools.Tool('before_handler', session_auth)
class Root:
@cherrypy.expose()
@cherrypy.tools.protect(debug=True)
def index(self):
tmpl = loader.load('index.html')
return tmpl.generate(flash = '',).render('html', doctype='html')