単純なものを見落としているかもしれませんが、CherrypySessionAuthを機能させることができません。
デバッグがオンで、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')