我正在尝试在flask中实现以下视图:
/索引
**显示带有用户名和密码条目的表单
提交后,重定向到2
/参数
**显示另一个具有更多条目的表格
只有在提供1个用户名和密码的情况下,才能看到*
提交后,重定向到3
/上传
**对从1和2输入的字段执行magic()
只能在1和2中填写
每个教程均假定您使用数据库。 不不检查任何数据库的用户名和密码。它们仅用于ntlm身份验证...
可以做到吗?还是我滥用烧瓶?
答案 0 :(得分:0)
正如您提到的NTLM身份验证一样,我假设您正在Windows网络中运行。如果是这样,我不确定为什么您需要一个用户可以输入用户名和密码的表格。
NTLM和Kerberos使用Windows会话的主体来使用在同一域内运行的服务对用户进行身份验证。用户登录一次Windows,然后在调用服务时会自动使用该身份对用户进行身份验证。
Flask使用Flask-Kerberos模块支持此操作
答案 1 :(得分:0)
您可以使用一个会话来存储用户名和密码以及一个标志,用于指定用户已完成前两个步骤:
import flask
app = flask.Flask(__name__)
app.secret_key = 'something'
def validate_upload(f):
def wrapper():
if 'completed' not in flask.session or not flask.session['completed']:
return flask.redirect('/')
return f()
return wrapper
@app.route('/', methods = ['GET'])
def home():
html = """
<form action='/second' method = 'POST'>
<input type='text' name='username'>
<input type='password' name='password'>
<input type='submit' value='Submit'>
</form>
"""
return html
@app.route('/second', methods=['POST'])
def second():
username, password = flask.request.form['username'], flask.request.form['password']
flask.session['username'] = username
flask.session['password'] = password
flask.session['completed'] = True
return flask.redirect('/upload')
@app.route('/upload', methods=['GET'])
@validate_upload
def do_something():
return '<p>Doing something with values</p>'