Сессия пользователя Flask
После аутентификации пользователя у меня возникают проблемы с тем, чтобы пользователь вошел в систему, когда он перемещается по веб-сайту, который я создал. Я пытался использовать куки и сеансы, но я не могу заставить его работать.
Я делюсь своим кодом для входа в систему, где я получаю данные для аутентификации пользователя из листа Excel, который заполняется при регистрации
Я нахожу имена каждого члена команды, чтобы они появлялись на странице команды, куда пользователь перенаправляется после входа в систему
@app.route('/login',methods=['POST','GET'])
def login():
# get data from form
try:
username = str(request.form['username2'])
password2 = str(request.form['password2'])
teamname = str(request.form['teamname'])
print(username)
print(password2)
# read excel sheet
data = pd.read_excel("C:\\Users\\290002925\\Documents\\registration.xlsx")
for name in data['Team']:
if name == teamname:
team_info = data.loc[data['Team'] == teamname]
print(team_info)
team_info['FullName'] = team_info['FirstName'] + [' '] + team_info['LastName']
teamroster = team_info[['FullName']].copy()
finalteamroster = pd.DataFrame(teamroster, index=range(5))
print(finalteamroster)
print(len(finalteamroster))
finalteamroster.fillna(value='', inplace=True)
print(finalteamroster)
amember1 = finalteamroster.at[0,'FullName']
print(amember1)
amember2 = finalteamroster.at[1,'FullName']
print(amember2)
amember3 = finalteamroster.at[2,'FullName']
print(amember3)
amember4 = finalteamroster.at[3,'FullName']
print(amember4)
amember5 = finalteamroster.at[4,'FullName']
print(amember5)
Вот где приходит аутентификация пользователя
for user in data['Email']:
#check username
if user == username:
passw = data.loc[data['Email'] == username]
# check password
print(passw)
test2 = passw.iat[0,3]
Вот как я записал куки, но я думаю, что сессия может быть более полезной
if test2 == password2:
# authenticated
print("User is authenticated")
response = render_template('teampage.html', teamname=teamname, member1=amember1, member2=amember2, member3=amember3, member4=amember4, member5=amember5)
response.set_cookie('userID', username)
return response
else:
print("Password is incorrect")
return render_template('login.html')
else:
print("Username is incorrect")
return render_template('index.html')
except:
print("fail")
return render_template('login.html')
Код для Teampage
@app.route('/teampage')
def teampage():
userid = request.cookies.get('userID')
return render_template('teampage.html', userid=userid)
HTML-ссылка пользователя
{{userid}}
1 ответ
Трудно понять ваш исходный код, но я понимаю, что вам нужно поддерживать сеанс пользователя.
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html', title=': Login')
if request.method == 'POST':
if YourMethodToCheckPassword==True:
session['username'] = request.form['user']
return redirect(url_for('home'))
А затем использовать объект Session везде, как
@app.route('/home')
def home():
if 'username' in session:
return render_template("index.html", name=session['username'])
Внутри вашего использования HTML
{{ name }}