我正在使用this Flask代码。到目前为止它的工作正常,但如果我想退出该怎么办呢。我想在我的html代码上有一个按钮,当我注销再次请求auth时。 我怎样才能实现这个代码
def check_auth(username, password):
"""This function is called to check if a username /
password combination is valid.
"""
return username == 'admin' and password == 'secret'
def authenticate():
"""Sends a 401 response that enables basic auth"""
return Response(
'Could not verify your access level for that URL.\n'
'You have to login with proper credentials', 401,
{'WWW-Authenticate': 'Basic realm="Login Required"'})
def requires_auth(f):
@wraps(f)
def decorated(*args, **kwargs):
auth = request.authorization
if not auth or not check_auth(auth.username, auth.password):
return authenticate()
return f(*args, **kwargs)
return decorated
@app.route("/")
@requires_auth
def index():
return render_template("welcome.html", uptime=GetUptime())
#Logout function
@app.route('/logout')
def logout():
#return redirect(url_for('index'))
flash('You were logged out')
return authenticate()))
答案 0 :(得分:1)
您正在使用基本身份验证。它没有“注销”的概念,但是,您可以通过发送错误的凭据(例如,密码无效的用户名)并返回401
而不是200
来模拟一个。有多种方法可以实现注销,但为了保持简单,您可以呈现模板视图或返回信息性文本,始终使用401
作为响应http代码:
@ns.route('/logout')
def logout():
"""End the current user session"""
return "Your session was closed", 401
答案 1 :(得分:0)
您可以使用auth数据创建会话(无论是否使用基本身份验证),并且当您想要注销时只需删除会话数据。
答案 2 :(得分:0)
如果您使用nice flask-login扩展名,则可以使用logout_user函数
from flask_login import login_user, logout_user
然后只为它创建一个端点(url)
@expose('/logout/')
def logout(self):
logout_user()
return redirect(url_for('index')