我使用Flask-Security开发了一个使用Flask的用户管理系统。我想在页面中添加一个Watson聊天机器人,它应该检查用户是否经过身份验证。这将在其登录模块中的Flask-Security内部完成,如下所示:
@app.route('/login', methods=['GET', 'POST'])
def login():
# Here we use a class of some kind to represent and validate our
# client-side form data. For example, WTForms is a library that will
# handle this for us, and we use a custom LoginForm to validate.
form = LoginForm()
if form.validate_on_submit():
# Login and validate the user.
# user should be an instance of your `User` class
login_user(user)
flask.flash('Logged in successfully.')
next = flask.request.args.get('next')
# is_safe_url should check if the url is safe for redirects.
# See http://flask.pocoo.org/snippets/62/ for an example.
if not is_safe_url(next):
return flask.abort(400)
return flask.redirect(next or flask.url_for('index'))
return flask.render_template('login.html', form=form)
当用户开始从聊天界面提问时(例如,从系统中注册日期询问)我们是否可以将他/她重定向到Flask的登录页面,并且在认证之后,我们回到对话对话框并提取相关数据经过身份验证的用户(例如用户个人资料的记录时间戳)?
见architecture diagram for Watson Assistant in the app context。 Watson Assistant是或者可以只是解决方案的几种服务之一。通常情况下,您的应用会通过反复sending a message to Watson Assistant驱动对话,对话,并获得响应。
Flask应用程序处理整体流程,身份验证以及聊天数据(可能作为聊天窗口)嵌入UI的方式。有关不同的身份验证流程,请参阅IBM Cloud App ID。这个IBM Cloud tutorial基于Flask并使用App ID实现OIDC。