2017-02-09 15 views
1

私はPythonフラスコを使用して簡単なWebアプリケーションを構築しています。このアプリケーションでは、パスlocalhost:8000/とログインすることができます。ログインが成功すると、別のページが表示されますが、ユーザーが既にログインしている場合、どのようにメインページにリダイレクトできますか?たとえば、初めてログインした場合はメインページに移動し、2番目のタブを開いて再度ログインすると、自動的にメインページにリダイレクトされます(gmailとよく似ています)。Python-falconの処理セッション

class LoginPage(object): 
    def on_get(self, req, resp, form={}): 
+0

[Falcon](https://falconframework.org/)を使用しているのか、[Flask](http://flask.pocoo.org/)を使用していますか?クラス/メソッドからファルコンのように見えるが、あなたの説明はフラスコとあなたのタイトルの鷹を言及する。 – otupman

+0

on_getは間違いなくファルコンのことです。あなたがセッション管理をしたいのであれば、私はFlaskがあなたのために良い選択だと思う(あなたのプロジェクトについては何も知らない)。ファルコンを使って私はビーカーを使ってみましたが、それは良いですが、そのドキュメントはそれほど明確ではないので、私は今日PRをしています。 – JasTonAChair

答えて

0

非常に単純なアプリケーションの場合、HTTP基本認証はおそらく十分です。フラスコはこれを非常に簡単にします。あなたが基本的な認証を使用している場合

@app.route('/secret-page') 
@requires_auth 
def secret_page(): 
    return render_template('secret_page.html') 

:特定のユーザのためにのみ利用可能である機能を中心に適用される以下のデコレータは、まさにそのん:ちょうどビュー機能をラップ、このデコレータを使用するには

from functools import wraps 
from flask import request, Response 

def check_auth(username, password): 
    """This function is called to check if a username password combination is valid. """ 
    return username == 'admin' and password == 'secret' 

def authenticate(): 
    """Sends a 401 response that enables basic auth""" 
    return Response(
    'Could not verify your access level for that URL.\n' 
    'You have to login with proper credentials', 401, 
    {'WWW-Authenticate': 'Basic realm="Login Required"'}) 

def requires_auth(f): 
    @wraps(f) 
    def decorated(*args, **kwargs): 
     auth = request.authorization 
     if not auth or not check_auth(auth.username, auth.password): 
      return authenticate() 
     return f(*args, **kwargs) 
    return decorated 

をmod_wsgiを使用すると、認証転送を有効にする必要があります。それ以外の場合、Apacheは必要なヘッダーを消費し、アプリケーションに送信しません。WSGIPassAuthorization

関連する問題