gpt4 book ai didi

python - 如何让用户保持在 session 中

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:00 24 4
gpt4 key购买 nike

user=users.query.filter(db.and_(users.username ==  request.form['username'] ,users.password==request.form['password'])).first()

我已经尝试过

app.config['user'] = user and session['user']=user

,但是不起作用

最佳答案

您的方法存在一些明显的问题。请务必先阅读有关处理 session 的 Flask 文档,它为您提供了一个非常好的示例:

http://flask.pocoo.org/quickstart/#sessions

from flask import Flask, session, redirect, url_for, escape, request
from werkzeug.security import check_password_hash

app = Flask(__name__)

app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'

def get_session_user():
if 'username' not in session:
return None
username = session['username']
# fetch the user from database somehow
user = db.get_user_by_username(username)
return user

def verify_password(hashed: str, password: str) -> bool:
return check_password_hash(hashed, password)

@app.route('/')
def index():
user = get_session_user()
if user:
return f'You are logged in as {user.username}'
return f'Please <a href="/login">login</a>'

@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = db.get_user_by_username(username)

if not user:
return 'No such user'

# hopefully you're storing hashed passwords in DB
# you need to check if the credentials matches what's stored in DB
if not verify_password(user.hashed_password, password):
return 'Invalid credentials'

session['username'] = user.username
return redirect('/')

return '''
<form method="post">
<input name='username' placeholder='username'>
<input type='password' name='password' placeholder='password'>
<button>Login</button>
</form>
'''

@app.route('/logout')
def logout():
session.pop('username', None)
return redirect('/')

关于python - 如何让用户保持在 session 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56866486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com