私は多くのソリューションをオンラインで見てきましたが、それらのすべてが外部ユーザーがアカウントを作成できるようにするより複雑なアプリケーションに対処しました。私の場合、唯一のユーザーは管理者になります。 Flask-Adminによって作成された/ adminルートを効率的に保護するにはどうすればよいですか?私の唯一のユーザーが管理者になる場合、Flask-Adminを保護する方法は?
0
A
答えて
1
これにはFlask-Loginを使用できます。私は通常、ユーザーがまだログインしていない場合、ログインを処理するAdminIndexViewクラスへのルートを追加します。それ以外の場合は、デフォルトの管理ページが表示されます。
from flask import Flask
from flask_login import LoginManager
from flask_admin import Admin
app = Flask(__name__)
login_manager = LoginManager(app)
login_manager.session_protection = 'strong'
login_manager.login_view = 'admin.login'
admin = Admin(app, index_view=MyIndexView())
MyAdminViewの定義は次のようになります
from flask_admin import AdminIndexView, expose, helpers
class FlaskyAdminIndexView(AdminIndexView):
@expose('/')
def index(self):
if not login.current_user.is_authenticated:
return redirect(url_for('.login'))
return super(MyAdminIndexView, self).index()
@expose('/login', methods=['GET', 'POST'])
def login(self):
form = LoginForm(request.form)
if helpers.validate_form_on_submit(form):
user = form.get_user()
if user is not None and user.verify_password(form.password.data):
login.login_user(user)
else:
flash('Invalid username or password.')
if login.current_user.is_authenticated:
return redirect(url_for('.index'))
self._template_args['form'] = form
return super(MyAdminIndexView, self).index()
@expose('/logout')
@login_required
def logout(self):
login.logout_user()
return redirect(url_for('.login'))
これはフラスコ-管理インタフェースで控えめフラスコ-ログインを統合しています。 Flask-Login documentationに記載されているように、ユーザーとパスワードの検証を実装する必要があります。あなたの管理者ルートへの不正アクセスを防止するために
EDIT
ビューごとにModelViewクラスを作成し、次のコードで機能is_accessible()
を追加します。
def is_accessible(self):
if (not login.current_user.is_active or not
login.current_user.is_authenticated):
return False
return True
関連する問題
- 1. Rubyの管理者によるユーザーの管理方法
- 2. ユーザーと管理者をmongodbで一緒に保存する
- 3. 私はユーザーか管理者かを判断する方法は?
- 4. Laravelは管理者以外のユーザーからの経路を保護します
- 5. サーバ管理者から暗号鍵を保護する方法は?
- 6. 管理者レベル以外の文書レベルでsolrを保護する方法
- 7. 管理者でない場合、ユーザーをルートにリダイレクト
- 8. $ _GETが私の唯一のオプションである場合、ユーザー名+パスワードを送信する最も安全な方法
- 9. 管理者によるMVCユーザー管理
- 10. Flask-USER管理でFlask-RESTfulを保護する方法は?
- 11. Laravel 5.2の管理パネルを保護する方法
- 12. 2つの異なるモデルの場合のカスタム故障の定義方法ユーザーとアクティブな管理者?
- 13. アクティブな管理者ユーザー管理リスト
- 14. Rails + Device;ユーザーが管理者にならないようにする方法
- 15. フラスコ管理者UserWarning:私のフラスコアプリケーションを実行する場合のフィールドがルールセット
- 16. ユーザーがアプリケーションをアンインストールするのを防ぐ方法(管理者権限なし)?
- 17. ユニオンプラットフォーム:管理パスワードの保護
- 18. AuthLogic管理者ユーザー以外の管理者のリンクを非表示にする
- 19. Spring Boot - 管理者向けのHystrixのようなダッシュボードを保護する方法
- 20. Googleドライブのすべてのファイルを取得する方法、保護者がいない場合
- 21. Wordpressで管理者とユーザーをログインフォームに挿入する方法
- 22. ユーザーが承認されていない場合、すべてのコントローラを保護する方法は?
- 23. ROSに管理者なしでユーザーを登録する方法は?
- 24. 、ユーザーが役割管理者
- 25. Azureクラウドでは、グローバル管理者と限定管理者なしでグループユーザーを管理する方法は?
- 26. 管理者と管理者の両方でSonataAdminBundleを転用する方法
- 27. アンドロイドで私のアプリケーションデバイス管理者を作る方法は?
- 28. Djangoの管理者で、グループ別にユーザーをフィルタリングする方法は?
- 29. 保護者の保管場所に安全なファイルを置くにはどうすればいいですか?
- 30. 管理者とユーザーのテーブル