1

単純なものを見落としているかもしれませんが、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')
4

1 に答える 1