2016-04-04 2 views
2

私は、管理パネルとAPIとして機能するFlaskアプリケーションで作業しました。私の管理パネルにはログインページとそれに管理者の束が含まれています。ですから、私はインターネットに公開したくありません.Adminパネルはイントラネットからしかアクセスできませんが、私のAPIはインターネットからアクセス可能でなければなりません。フラスコアプリは2つの異なるアプリとして機能します

私は2台のマシンを持っています.1台はローカルマシンで、もう1台はAWSでホストされます。問題は、コードが2台のマシンで同じになりますが、一方はAPIとして機能し、もう一方は管理パネルとして機能することです。 私の監督は、私がやろうとしていることを達成するために "Flask blueprints"を使うことができると言いましたが、実装を開始する前に確信したいと思います。

Flaskの青写真でこの問題を解決できますか、それとも他の選択肢がありますか?

(一つのことが頭に浮かぶ二つの異なるフラスコのアプリに管理パネルからAPIを分離することである。簡単にでき、すべてを解決している。しかし、私は今それを行うことができません。)

Image of what I am trying to do

+1

はい、bfromueprintsを使用してアプリに追加してください。 –

+0

はい、私はKlaus – Pedru

答えて

0

あなたの青写真にbefore_app_requestを使用して、クライアントのIPアドレスが192.168または10.0または172.16

from flask import abort 

@blueprint_1.before_request 
def check_network(): 
    if not request.remote_addr.startswith("192.168") or ...: 
      abort(404) 

編集で始まるかどうかを確認することができます。このような機能before_app_request青写真のドキュメントによると、実行されたB青写真の外側であっても、各要求の前に。 代わりにbefore_requestを使用してください(青写真の要求前に実行されます)青写真...コードを編集しました...

+0

あなたの答えをありがとうございます。しかし、攻撃者は私の管理パネルに依頼するためにIPを依然として偽造することができますが、そうは考えにくいので、私は次のようなコードを使用することにしました: 'APP.config ['APP_TYPE '] ==' panel 'APP.register_blueprint(panel)else:APP.register_blueprint(api) ' – VuvuZelda

+0

2台の物理サーバと1つのコードが異なる設定の場合、コードは正しいですが、私は1台のサーバを使用していますあなたが望む結果を持っている。 –

関連する問題