如何确认在Flask Security MongoEngine应用中通过create_user创建的用户?

4 投票
2 回答
2632 浏览
提问于 2025-04-17 18:07

我有一个用mongoengineflask-security搭建的python flask应用,这个应用是根据示例创建的,目的是实现所有的确认、注册、跟踪和恢复功能。

一切都正常,除了用代码直接创建的用户:

MongoEngineUserDatastore.create_user(...)

无法登录。也就是说,当你尝试用这个用户登录时,会出现一个错误信息:

"Email requires confirmation"

因为没有发送带有哈希链接的邮件,所以无法进行确认。有没有什么参数可以在创建用户时传递,或者在哪里设置确认标记呢?

这是我的代码:

2 个回答

1

当你创建测试用户时,需要让他们处于“激活”状态,比如:

@app.before_first_request
def create_user():
    user_datastore.create_user(
        email='me@mydomain.com', 
        password=utils.encrypt_password('password'),
        active=True)
5

我通过确认一个新注册的用户,并查看mongodb(一个数据库)来了解添加了哪些字段,最终搞明白了。结果发现,确认所需的字段是 confirmed_at,这个字段必须包含一个日期和时间,所以:

import datetime

# Create a user to test with
@app.before_first_request
def create_user():
    user_datastore.create_user(
        email='me@mydomain.com',
        password=utils.encrypt_password('password'),
        confirmed_at=datetime.datetime.now())

我在这里更新了相关内容:

https://gist.github.com/davidthewatson/327776905ef30815c138

撰写回答