1
我正在嘗試創建一個簡單的Web應用程序,以便更好地研究它是如何工作的。這個想法是,用戶可以通過twitter登錄,之後可以訪問前端的不同功能。我可以讓用戶通過twitter進行身份驗證,但我從一個請求失去了會話。我用python3
flask
和flask-oauthlib
燒瓶:在安靜的服務器中丟失了會話
from flask import Flask, request, url_for, session, redirect, flash
from flask_cors import CORS
from flask_oauthlib.client import OAuth
app = Flask(__name__)
cors = CORS(app)
oauth = OAuth()
@app.route('/login')
def login():
callback_url = url_for('oauthorized', next=request.args.get('next'))
return twitter.authorize(callback=callback_url or request.referrer or None)
@app.route('/logout')
def logout():
session.pop('twitter_oauth', None)
return redirect(app.config['FRONT_END_URL'])
@app.route('/oauthorized')
def oauthorized():
frontend_url = app.config['FRONT_END_URL']
resp = twitter.authorized_response()
if resp is None:
flash('You denied the request to sign in.')
return redirect(frontend_url)
elif resp['screen_name'] not in allowed_twitter:
flash('You dont have premission')
return redirect(frontend_url)
access_token = resp['oauth_token']
session['access_token'] = access_token
session['screen_name'] = resp['screen_name']
session['twitter_token'] = (
resp['oauth_token'],
resp['oauth_token_secret']
)
flash('You were successfully logged in')
return redirect(frontend_url + "/accionDirecta")
@app.route('/test')
def test():
print(session) # Is always empty
access_token = session.get('access_token')
if access_token is None:
return("Not login")
else:
return("login")
的print(session)
內oauthorized()
是正確的,但是當用戶登錄後,作出使用jquery $ajax
得到/test
,我的會話是空的。爲什麼?