我已禁用CSRF,但无法使用Flask-Security通过基于角色的授权从本地前端服务器登录REST API。我确实进行了登录,但是我认为请求中没有存储cookie,所以我一直在前端服务器上获取登录页面。这是我正在使用的代码:
payload = {'username': request.form['username'], 'password': request.form['password']}
with requests.Session() as s:
r = s.post('http://localhost:5002/login', data=payload)
print(s.cookies)
if r.ok:
r2 = s.get('http://localhost:5002/protected', cookies=s.cookies)
是否有办法维护与登录以显示受保护内容的前端客户端的会话?
Flask-Security LoginForm不接受“用户名”-该字段称为“电子邮件”。现在-您可以在该字段中输入用户名,并且如果您已正确配置SECURITY_IDENTITY_ATTRIBUTES-它应该在数据库中查找“用户名”列。
第二-我想指出的是,仅仅因为您使用请求并不意味着您正在发送JSON-实际上,您正在发送表单输入。因此,Flask-Security始终以表单形式进行响应-您基本上不会看到200以外的任何内容-响应主体包含带有各种错误消息的“表单”。
所以-两件事-如果您想要REST-做到这一点-新版本的请求采用参数json =并将做正确的事情。如果您这样做,我相信您将开始获得400份回复。