烧瓶登录(无数据库)

时间:2018-07-26 04:46:15

标签: python rest flask

我正在尝试在flask中实现以下视图:

  1. /索引
    **显示带有用户名和密码条目的表单
    提交后,重定向到2

  2. /参数
    **显示另一个具有更多条目的表格
    只有在提供1个用户名和密码的情况下,才能看到*
    提交后,重定向到3

  3. /上传
    **对从1和2输入的字段执行magic()
    只能在1和2中填写


我见过的

每个教程均假定您使用数据库。 不检查任何数据库的用户名和密码。它们仅用于ntlm身份验证...

可以做到吗?还是我滥用烧瓶?

2 个答案:

答案 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>'
相关问题