python - 自定义 Flask-JWT 验证功能

标签 python flask flask-jwt

在 Flask 初始化文件中,我有

app = Flask("myapp")
jwt = JWT(app, AuthController.staff_login, identity)
api.add_resource(StaffLogin, '/login')

StaffLogin 检查用户名/密码,然后调用 AuthController.staff_login

class AuthController():
    def __init__(self):
        # TODO: Create a config.yaml
        self.engine = create_engine(DefaultConfig.SQLALCHEMY_DATABASE_URI)
        Base.metadata.create_all(self.engine)

        DBSession = sessionmaker(bind=self.engine)
        self.session = DBSession()                   

    def staff_login(self, staff_name, staff_password):
        result = self.session.query(Staff) # Irrelevant details of query removed
        if Staff_Authentication.check_password(staff_password, query['staff_password']):
                # Build login_response as JSON
                return login_response

现在我需要这种格式的自定义登录响应

[
    {
        "projects": [
            {
                "project_id": 1,
                "project_name": "omnipresence",
                "project_root": "/path/to/project/files"
            }
        ],
        "staff_id": 13,
        "staff_name": "adalovelace"
    }
]

问题

如何让 Flask-JWT 使用我的函数作为身份验证

最佳答案

Flask-JWT 很旧,已被废弃。查看flask-jwt-extended 或flask-jwt-simple 作为替代方案,它们设计得更好并且仍然得到维护(我是这些扩展的作者,所以我当然有偏见)。

它们的设置是为了让您提供自己的端点,而不是让扩展程序为您管理端点。

关于python - 自定义 Flask-JWT 验证功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46181666/

相关文章:

python - numpy.argmax() 不适用于我排序的 pandas.Series

使用 Vue.js 进行身份验证 | Flask-RESTful 和 Google 登录

python - 使用Application Factory实现Flask-WhooshAlchemy

Flask-jwt-extended 不支持必需的声明?

python - 将多维数组中的选定值追加到新数组

python - 机器人框架扩展 Selenium 来处理加载元素

python - 为什么对象的键是None?

python - 无法在我的 Raspberry Pi 上使用 pip 安装 Flask

python - 如何在 flask security mongoengine 应用程序中确认 create_user 创建的用户?