我在应用程序引擎上上传了一个python flask应用程序,在登录后的页面上我在其中使用了会话,该应用程序在我的本地计算机上运行良好,没有任何错误,但我的应用程序在应用程序机上运行不同,当我看到日志时,我意识到应用程序引擎在任何时候都会自动清除会话cookie。我不知道为什么会发生这种情况,因为应用程序在我的本地计算机上运行得很好。当应用程序引擎清除我的会话时,程序会将我重定向到登录页面,如果根据我的loginrequired decorator清除了会话,这是必要的所以请给我这个应用程序引擎错误的解决方案
装饰器函数:-
def login_requested(f):@包裹(f)def deco_function(*args,**kwargs):打印("hii")打印(会话)如果会话中存在"loggedin":返回f(*args,**kwargs)return redirect(url_fo('login'))返回去功能(_F)
登录路径:-
@app.route("/",methods=["GET","POST"])def-login():
if request.method == 'POST':
if bcrypt.checkpw(request.form['password'].encode('utf-8'), hashed_pass.encode('utf-8')) and (request.form['user_name'] == firebase_user_name) :
session['loggedin'] = 'admin'
print(session)
return redirect(url_for('dashboard'))
flash('Username or password incorrect')
return render_template('login.html')
session['loggedin'] = 'admin'
实际做什么?这是在设置cookie吗?
我正在运行flask,并在我的登录处理程序中调用这个set_session_cookie
函数:
from werkzeug.http import dump_cookie
def set_session_cookie(response, cookies_value, max_age=DEFAULT_MAX_AGE):
cookie = dump_cookie(
'my_cookies_name',
cookies_value,
max_age=max_age,
secure=True,
)
response.headers.add('Set-Cookie', cookie)
然后在我的login_required
装饰器中,我执行request.cookies.get('my_cookies_name', None)
以检索cookies_value
,然后验证cookies_value