问题描述
我正在尝试构建一个Flask Web应用程序,该应用程序将用户连接到需要用户登录的服务,但是我无法中继登录。
服务的身份验证通过以下方式工作(非常不正常):
这是我的用户类别:
class User(UserMixin):
def __init__(self,userid):
self.userid = userid
self.token = None
def get_id(self):
return self.userid
def login(self,loginname,password):
# Request
data = {'userid' : self.userid,'loginname' : loginname,'password' : password}
r = requests.post('https://myurl.com/authenticate',data=data)
# If Failure
if r.status_code != 200:
flash('Unsuccessful Login!','danger')
return False
# Extracting the Token
self.token = r.json()['token']
# Success
flash('You have successfully logged in!','success')
return True
@app.route("/login",methods=['GET','POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User(form.userid.data)
if user.login(form.loginname.data,form.password.data):
login_user(user)
return redirect(url_for('home'))
return render_template('login.html',title='Login',form=form)
class LoginForm(FlaskForm):
userid = StringField('User ID',validators=[Datarequired()])
loginname = StringField('Loginname',validators=[Datarequired()])
password = PasswordField('Password',validators=[Datarequired()])
submit = SubmitField('Login')
我相信我必须使用request_loader
,但是单击登录按钮时,授权标头和args均为空。
@login_manager.request_loader
def load_user_from_request(request):
print('AUTH',request.headers.get('Authorization')) # -> None
print('ARGS',request.args) # -> ImmutableMultiDict([])
在这种情况下,request_loader
应该如何访问用户ID ,登录名和密码?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)