Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask登录(无数据库)_Python_Rest_Flask - Fatal编程技术网

Python Flask登录(无数据库)

Python Flask登录(无数据库),python,rest,flask,Python,Rest,Flask,我试图在flask中实现以下视图: /索引 *显示包含用户名和密码项的表单 *提交后,重定向到2 /params *显示另一个包含更多条目的窗体 *仅当他们提供了1的用户名和密码时才可查看 *提交后,重定向到3 /上传 *使用从1和2输入的字段执行magic() *仅当他们填写1和2时才可见 我看到的每个教程都假设您使用数据库。1中的用户名和密码未根据任何数据库进行检查。它们仅用于ntlm身份验证 这能做到吗?还是我误用了flask?当您提到NTLM身份验证时,我假设您正在Windows网络中

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

  • /索引
    *显示包含用户名和密码项的表单
    *提交后,重定向到2

  • /params
    *显示另一个包含更多条目的窗体
    *仅当他们提供了1的用户名和密码时才可查看
    *提交后,重定向到3

  • /上传
    *使用从1和2输入的字段执行magic()
    *仅当他们填写1和2时才可见


  • 我看到的每个教程都假设您使用数据库。1中的用户名和密码未根据任何数据库进行检查。它们仅用于ntlm身份验证


    这能做到吗?还是我误用了flask?

    当您提到NTLM身份验证时,我假设您正在Windows网络中运行。如果是这样的话,我不知道你为什么需要一个表单,用户可以输入用户名和密码

    NTLM和Kerberos使用Windows会话的主体对同一域中运行的服务的用户进行身份验证。用户只需登录一次Windows,当调用服务时,该身份就会自动神奇地用于验证用户身份


    Flask使用模块支持此功能

    您可以使用会话存储用户名和密码,并使用标志指定用户已完成前两个步骤:

    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>'
    
    导入烧瓶
    app=烧瓶。烧瓶(\uuuuu名称\uuuuuuu)
    app.secret_key='something'
    def验证_上传(f):
    def包装器():
    如果“已完成”不在flask.session中或不是flask.session[“已完成”]:
    返回烧瓶。重定向(“/”)
    返回f()
    返回包装器
    @app.route('/',方法=['GET'])
    def home():
    html=”“”
    """
    返回html
    @app.route('/second',methods=['POST'])
    def second():
    用户名,密码=flask.request.form['username'],flask.request.form['password']
    flask.session['username']=用户名
    flask.session['password']=密码
    session['completed']=True
    返回烧瓶。重定向(“/upload”)
    @app.route('/upload',methods=['GET'])
    @验证上传
    定义做某事():
    返回“使用值做某事”
    
    除了@login\u所需的功能外,我已经正确实现了所有功能。似乎无论我做什么,它都无法验证(因此我无法查看页面)