Какой лучший способ создать суперпользователя в flask - PullRequest
1 голос
/ 15 февраля 2020

Я работаю над приложением flask, которое мне нужно для создания различных типов пользовательских ролей с использованием суперпользователя. Каков наилучший способ создать суперпользователя? Вот несколько способов, которыми я размышляю:

  1. Создайте пользовательскую команду и выполните ее в работе.

    import click
    from flask import Flask
    
    app = Flask(__name__)
    
    @app.cli.command("create-superuser")
    @click.argument("name")
    def create_superuser(name):
        ...
    
  2. Создать функцию и выполнить до первого запроса.

    @app.before_first_request
    def init_db():
        db.create_all()
        insert_superuser()
    
  3. Или просто sql вставить суперпользователя в базу данных.

Если я делаю это неправильно или это плохая практика на производстве, пожалуйста, сообщите мне. Я все еще новичок в этом.

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Кстати, извините, но вы пометили свой вопрос flask_restful, и я действительно думаю, что все должны использовать flask_restplus (сейчас flask_restx, разветвленный из-за смены сопровождающих).

Я мог бы изменить теги, но я хочу оставить вам выбор сделать это

Это то, что вам нравится больше всего. Там нет лучшего способа. Это зависит от вашего варианта использования. Однако мне не нравится 2-й метод (before_first_request).

  1. Пользовательская команда

Если вы хотите передать эту задачу человеку, вы можете использовать это , Люди придут к тому, кто их добавит или нет на стороне администратора.

Вы можете использовать декоратор @app.before_request(), чтобы действие выполнялось каждый раз, но не устанавливайте базу данных каждый раз, когда вы запускаете приложение. Используйте базу данных, и это приведет нас к третьей.

Суперпользователь в базе данных (пароль хешируется с помощью sha256).

Обычно, если система запущена, вам не нужно слишком часто связываться с администратором.

Есть еще один способ: токен JWT .

1 голос
/ 15 февраля 2020

Здесь есть несколько опций -

  1. Иметь команду CLI для добавления пользователя, как вы делаете. Я считаю, что большинство проектов go это маршрут и что он работает довольно хорошо, если вы можете запустить CLI в системе с соответствующей конфигурацией. Вообще говоря, возможно, имеет смысл расширить этот интерфейс командной строки и включить в него такие вещи, как сброс пароля.

  2. В большинстве случаев выполняется «Первый запуск», когда приложение отображает форму с запросом информации. Вот как обычно работают такие вещи, как Github Enterprise или Wordpress, но существует небольшая угроза, когда пользователь, который знает, что вы развертываете, может побить вас веб-интерфейсом. Этого можно избежать, если скрипт первого запуска регистрирует URL-адрес с маркером безопасности, поэтому только тот, кто имеет доступ к журналам, может запустить проект конфигурации. Если вы не развертываете у клиентов, хотя это сложнее, чем нужно.

  3. Создавайте пользователей на основе переменных среды. Этот маршрут особенно полезен при создании сред для разработчиков, так как он означает, что разработчикам не нужно проходить через дополнительные шаги при установке. Это плохая идея для производства.

Надеюсь, это поможет!

...