0
from bottle import  route, run, debug, error, request, template

@route('/home')
@route('/home/')
def login():
    return template('templates/login')

@route('/home', method='POST')
@route('/home/', method='POST')
def welocme():
    data = request.POST
    if data:
        password = data.get('password')
        check_pass = 'password'
        if password == check_pass:
            return template('templates/welcome')
        else:
            return template('templates/login')
    else:
        return template('templates/login')

私の要件は次のとおりです。同じ URL でログイン ページとウェルカム ページを取得します。ログイン ページにはパスワード フィールドが 1 つしかありません。

私の問題:ログインして更新時にウェルカムページに再度アクセスすると、ログインページに移動します。ただし、理想的には、ウェルカム ページのみに表示する必要があります。

@error(404)
def error404(error):
    return 'http://google.com'

私の 2 番目の問題: 404 の特定の URL にリダイレクトしたい.

4

3 に答える 3

1

ユーザーが「/home」ページにアクセスした場合、ログイン画面を表示する前にログインしているかどうかを確認したくありませんか? HTTP メソッドが POST でない場合、まだログインしていないと思われるようです。

あなたのフレームワークについてはよくわかりませんが、ログインが成功した場合は Cookie を設定し、Cookie で HTTP GET をチェックして、ユーザーが認証されているかどうかを確認する必要があると思います。

于 2010-11-26T23:13:19.733 に答える
1

2 番目の質問はここで回答されます。

Beaker の Cookie セッションを調べて、それを使用してリクエスト間でアプリケーションの状態を維持することもできます。

于 2011-01-16T16:55:27.080 に答える
0

質問を正しく理解していれば、ウェルカム テンプレートをレンダリングする唯一の方法は POST を使用することです。

これを変更して、GET リクエストが誰かがログインしているかどうかを確認するようにできます。それが失敗した場合は、ログイン ページにリダイレクトします。

于 2010-11-26T23:23:41.433 に答える