我正在使用登录系统创建一个网站,这就是我正在处理的问题:
我有两条路线:
第一个是登录页面,这是代码:
@app.route('/login')
def login():
return render_template('login.html')
@app.route('/login', methods=['POST'])
def login_submit():
error = None
if request.form['username'] == 'khoa.programmer' and request.form['password'] == 'HotnCold':
if request.form['actions'] == 'add-post':
return redirect('/admin/addpost')
else:
error = 'Wrong info'
return render_template('login.html', error=error)
,第二个是用户登录后重定向的addpost路由。
问题是我不知道如何检查该用户是否成功登录。我想阻止人们只是输入网址并在未经许可的情况下访问网页,只需向他们显示消息或将其重定向到登录页面即可。请帮忙!
抱歉我的英文!
答案 0 :(得分:2)
你可以使用sesion。该视频还将为您提供帮助https://www.youtube.com/watch?v=WCpNvteLCDI
from flask import Flask, render_template, redirect, url_for, request, session, flash
from functools import wraps
import os
app = Flask(__name__)
app.secret_key = 'YOUSECRETKEY'
app.permanent_session_lifetime = timedelta(hours=24)
def login_required(f):
@wraps(f)
def wrap(*args, **kwargs):
if 'logged_in' in session:
return f(*args, **kwargs)
else:
flash('You need to login first')
return redirect(url_for('login'))
return wrap
@app.route('/login/', methods=['GET', 'POST'])
def login():
error = None
if request.method == 'POST':
login = request.form['username']
password = request.form['password']
if login == password;
session['logged_in'] = True
return redirect(url_for('panel'))
else:
error = 'Invalid credentials. Try again'
return render_template('login.html', error=error)
return render_template('login.html', error=error)
@app.route('/panel/')
@login_required
def panel():
return render_template('panel.html')
@app.route('/logout/')
@login_required
def logout():
session.pop('logged_in', None)
return redirect(url_for('login'))
if __name__ == '__main__':
app.debug = True
app.run(host=os.getenv('IP', '0.0.0.0'), port=int(os.getenv('PORT', 5000)))
答案 1 :(得分:0)
您可以使用flask-login
@site.route('/login', methods=['GET','POST'])
def login():
form = LoginForm()
if g.user is not None and g.user.is_authenticated:
flash('Wrong info')
return redirect(url_for('index.index'))
if form.validate_on_submit() and request.method == "POST":
name = form.name.data
passwd = form.passwd.data
或者您可以使用会话来检查登录状态
当你登录时,session ['login_in'] = True,当你退出时,session ['login_in'] = False
答案 2 :(得分:0)
我觉得您希望在请求之间传递经过身份验证的用户,因此您可以使用会话
请阅读http://flask.pocoo.org/docs/0.10/api/#flask.session
from flask import session
session['user'] = your_way_of_getting_authenticated_user()
# retrieve your user in another view
user = session['user']
# redirect to login using url_for to the login page if user mismatch or None
请注意,您需要在使用会话
之前为您的应用设置密钥from flask import Flask
app = Flask(__name__)
app.secret_key = "yoursecret"
我的方法是使用http://flask.pocoo.org/docs/0.10/patterns/viewdecorators/#login-required-decorator中指定的@login_required装饰器来装饰我的秘密视图,这里的示例是使用g
对象给出的。
答案 3 :(得分:0)
您可以使用Flask登录(但您也将需要login_manager)。因此here是完整的文档。
console.log(Actor.getAverageAgeOf(actors));
答案 4 :(得分:0)
创建一个检查会话状态的函数。
def protectedPage():
if 'userID' not in session:
return redirect('/log-in', code=302)
if session['userID'] == False:
return redirect('/log-in', code=302)