我正在运行一个Flask web应用程序,并使用Apache基本身份validation(使用.htaccess和.htpasswd文件)来密码保护它。 我想密码只保护应用程序中的一个网页。 当我的密码保护网页的HTML文件没有效果,网页仍然没有密码保护。 这可能是因为它是我的Python文件使用render_template调用HTML文件? 我不知道如何解决这个问题。
您需要限制对端点的访问。 这段代码应该让你开始正确的道路。
from functools import wraps from flask import request, Response 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
有了这个,你可以用@requires_auth
来装饰你想要限制的任何端点。
@app.route('/secret-page') @requires_auth def secret_page(): return render_template('secret_page.html')