Python 如果令牌未在flask中过期或退出,如何跳过登录页?
如果flask会话中已有令牌退出,如何跳过登录页。在Python 如果令牌未在flask中过期或退出,如何跳过登录页?,python,flask,flask-login,Python,Flask,Flask Login,如果flask会话中已有令牌退出,如何跳过登录页。在def login():中,我从auth.get_token()方法获得了令牌。若令牌是退出,那个么我将如何跳过登录页面 from flask import session def authenticated_resource(function): @wraps(function) def decorated(*args, **kwargs): if session.get("authenticated"): retur
def login():
中,我从auth.get_token()
方法获得了令牌。若令牌是退出,那个么我将如何跳过登录页面
from flask import session
def authenticated_resource(function):
@wraps(function)
def decorated(*args, **kwargs):
if session.get("authenticated"):
return function(*args, **kwargs)
return abort(403) # unauthenticated
return decorated
@app.route('/login', methods=['GET', 'POST'])
def login():
error=None
if request.method=='POST':
if request.form['username']!='admin' or request.form['password']!='1234':
error ='Invalid Credentials. Please try again.'
else:
username=request.form['username']
password=request.form['password']
token =auth.get_token(username, password)
session["authenticated"] = True
session["auth_token"] = token
return redirect(url_for('getstats'))
return render_template('login.html', error=error)
@app.route('/logout')
def logout():
session.pop("auth_token", None)
session.pop("authenticated", None)
return redirect(url_for('login'))
@app.route('/metering')
@authenticated_resource
def getstats():
token =session.get("auth_token")
print 'token in metering=',token
return render_template('metering.html', title='Resource Usage')
下面是一个可能会有所帮助的建议(我添加了一个重定向到登录页面的UX建议,如果您喜欢一般的403错误响应,可以忽略此建议):
from flask import redirect, session, url_for
from functools import wraps
def authenticated_resource(function):
@wraps(function)
def decorated(*args, **kwargs):
if (session == None or 'authenticated' not in session or not
session['authenticated']):
return redirect(url_for('.login', next=request.url))
return function(*args, **kwargs)
return decorated