如何自定义Flask-security提供的注册?

时间:2014-08-19 06:04:35

标签: python flask flask-security

我应该做什么,如果需要设置用户的角色,例如FooUser?我需要在哪里这样做?在我自己的/create_account视图或上下文处理器中?

@app.route('/create_account')
def create_account():
    user_datastore.find_or_create_role('FooUser')
    user_datastore.add_role_to_user(user,role)
    return render_template('register_user.html')

3 个答案:

答案 0 :(得分:3)

您可以按照以下说明自定义视图: http://flask-security.readthedocs.org/en/latest/customizing.html

您可以使用信号挂钩用户注册过程: http://flask-security.readthedocs.org/en/latest/api.html#signals

答案 1 :(得分:2)

重要!第二种方式很简单。 @user_registered.connect_via(app) def user_registered_sighandler(sender, **extra): sender.logger.debug("logger-user_registered_sighandler:", extra) user = extra.get('user') role = user_datastore.find_or_create_role('farmer') user_datastore.add_role_to_user(user,role) db.session.commit() print "print-user_registered_sighandler:", extra

答案 2 :(得分:1)

要向用户添加角色,您必须使用flask-security的API:

flask_security.datastore.UserDatastore.add_role_to_user(user, role)

绝对可以在您自己的 create_account 或类似代码中执行此操作。 ContextProcessors 用于在呈现模板之前准备数据。这意味着您创建或获取用户角色对象,然后调用上述API将角色分配给用户。如果您需要进一步的帮助,请更具体。