我尝试使用HTTP请求实施Flask-Login来验证凭据。我使用的链接是/login?psName=myUser&psPwd=myPass
的IP地址 - 根据psName
和psPwd
的值,该页面将返回XML:
错误凭据(例如psName
= myUser
,psPwd
= wrongPassword
):
<cache version="1.0">
<exception version="1.0" code="-777" message="Incorrect Login or Password [myUser]"/>
</cache>
获取正确的凭据(例如psName
= myUser
,psPwd
= 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。
还有其他方法吗?
真的很感激帮助。谢谢!