2017-12-04 12 views
1

私はウェブ開発が初めてで、私は学校プロジェクトのためにフラスコを使ってウェブサーバーを作ろうとしています。問題はログイン後、認証が必要な別のページにリダイレクトし、ヘッダーを介して認証トークンを渡すことです。しかし、ページはフリーズし、のリダイレクトを示しています...と私は自動的にリダイレクトされるべきです(これは起こらない)。ヘッダーにトークンでログインした後のフラスコのリダイレクト

これは、ログインPOSTとリダイレクトされたページのコードです。

@app.route('/login', methods=['POST']) 
def login_verify(): 
    username = models.User.query.get(request.form['username']) 
    if username == None or username.verify_password(request.form['password']) == False: 
     abort(401) 
    redir = redirect(url_for('map')) 
    redir.headers = {'headers':username.encode_auth_token()} 
    return redir 

@app.route('/map') 
def map(): 
    token = request.headers.get('headers') 
    if token == None or models.User.decode_auth_token(token) == None: 
     abort(403) 
    deviceList = list(db.session.query(models.Location.terminalId.distinct()).all()) 
    return render_template('seeLocations.html',token = str(token),deviceList = deviceList) 

これも試してみましたが、トークンをURLパラメータとして使用しないでください。あなたは、あなたが後で必要に応じてマッピングするために、あなたのルートに使用することができますセッションにトークンを救うことができるあなたのログインでは

探しているものを達成するためにセッションを使用することができ

return redirect(url_for('map',headers=username.encode_auth_token())) 

答えて

1

session['token] = token 

そしてそれにアクセスするためには、あなたが使用することができますが、セッションからの値とキーの設定を解除するためにあなただけ

variable = session['token'] 

により、プログラムの任意の場所にアクセスすることができます

を使用することができます値です

session.pop('token' none) 

フラスコセッションの詳細here

関連する問題