我正在构建服务,我希望通过其他服务进行用户身份验证和用户连接,而无需在演示服务器上安装数据库。
我是Flask的新手,发现这个Flask User用于管理,这似乎很方便我的需要,但需要数据库的映射。我一直在尝试创建一个SQLAlchemyAdapter来模拟这个但没有成功但没有成功。此外,它似乎不是一个合适的解决方案,因为SQLAlchemy用于数据库使用。
是否可以使用REST接口而不是数据库进行某种用户管理?
谢谢!
答案 0 :(得分:1)
这很容易做到,你可以使用另一个提供REST API来让用户使用他们的用户名和密码进行身份验证(facebook,google等等...) 例如:
让用户使用其API进行身份验证:
def authenticate(username, password):
"""
Example of
function that manages authentication
"""
global headers
separator = (':').encode('utf-8')
auth_user = username+separator+password
headers = {'Authorization': 'Basic %s' % user}
connect = httplib.HTTPSConnection("uri")
connect.request('GET', '/rest/auth/', headers=headers)
response = connect.getresponse()
statusCode = response.status
return statusCode
使用flask.request,您可以从用户/登录页面请求数据:
<body>
<div id="page-content-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1>Login</h1>
<form action="" method="post">
<input type="text" size="30" placeholder="Username" name="username" value="{{
request.form.username }}"></br>
<input type="password" size="30" placeholder="Password" name="password" value="{{
request.form.password }}"></br>
<input class="btn btn-default" width="55" id="btn-login" type="submit" value="Login">
</form>
{% if error %}
<p class="error"><strong>Error:</strong> {{ error }}</p>
{% endif %}
</div>
</div>
</div>
</div>
</body>
以下是获取表单数据的python函数:
@app.route('/', methods=['GET', 'POST'])
@app.route('/login', methods=['GET', 'POST'])
def login():
global username
global password
e = None
try:
if flask.request.method == 'POST':
username =(flask.request.form['username']).encode('utf-8')
password =(flask.request.form['password']).encode('utf-8')
auth = authenticate(username, password)
if auth == 200:
return flask.render_template('index.html')
else:
print('no ooo')
except Exception as e:
print(e)
return flask.render_template('login.html', error=e)