使用带有http请求

时间:2016-08-17 17:13:27

标签: python authentication flask httprequest flask-login

我尝试使用HTTP请求实施Flask-Login来验证凭据。我使用的链接是/login?psName=myUser&psPwd=myPass的IP地址 - 根据psNamepsPwd的值,该页面将返回XML:

错误凭据(例如psName = myUserpsPwd = wrongPassword):

<cache version="1.0">
    <exception version="1.0" code="-777" message="Incorrect Login or Password [myUser]"/>
</cache>

获取正确的凭据(例如psName = myUserpsPwd = rightPassword):

<cache version="1.0">
    <session_info session_key="1234" full_name="Alice Bob" login="myUser" user_key="4321"/>
</cache>

目前,要检查我的login方法的身份验证,我会捕获提交的登录输入并将其存储在dict login_info中。我将login_info作为参数传递给函数authen_user

def authen_user(login_info):
    r = requests.get('http://10.10.80.111/PDS.sfw/net4/login.jsp', params=login_info)

    root = ElementTree.fromstring(r.content)

    sessionExists=root.find('session_info')

    if sessionExists is None:
        return False
    else:
        return True

@app.route("/login", methods=['GET', 'POST'])
def login():
    error = None
    if request.method == 'POST':
        u = request.form['username']
        p = request.form['password']
        login_info = {'psName': u, 'psPwd': p}

        if authen_user(login_info):
            # if successful login
            return redirect('homepage')
        else:
            # if invalid credentials
            flash('Invalid login.')
            return render_template('login.html', uName=u)
    else:
        return render_template('login.html')

由于我想使用Flask-Login为我处理会话,因此我使用request_loader。如何获取捕获的用户名和密码并将其传递给request_loader?文档传递了一个名为request的参数。我可以改变吗?我想将login_info作为一个全局变量,这样当我用密码和用户名更新它时,我可以将login_info传递给request_loader。 还有其他方法吗?

真的很感激帮助。谢谢!

0 个答案:

没有答案