私は小さなアプリをボトルに書いています。概念的な問題がありますそれを解決するのに役立ちます
質問
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をリダイレクトしたい。
解決
ユーザーが「/home」ページにアクセスした場合、ログイン画面を表示する前にログインしているかどうかを確認したくありませんか? HTTPメソッドが投稿されていない場合、それらがまだログインしていないと仮定しているように見えます。
私はあなたのフレームワークについてあまり知りませんが、ログインが成功した場合はクッキーを設定する必要があると思います。その後、HTTPのCookieを確認して、ユーザーが認証されているかどうかを確認する必要があります。
他のヒント
あなたの2番目の質問が答えられます ここ.
あなたも見たいかもしれません ビーカーのクッキーセッション そして、それを使用して、リクエストの間にアプリケーションの状態を維持します。
質問を正しく理解していれば、ウェルカムテンプレートをレンダリングする唯一の方法は投稿によるものです。
これを変更して、リクエストが誰かがログインしているかどうかを確認するようにすることができます。それが失敗した場合は、ログインページにリダイレクトします。
所属していません StackOverflow