先ほど、Raspberry Pi を無線ルーターに組み込む方法を説明しましたが、毎回 ssh コマンドで管理するのは面倒だと感じたので、主に Python で書かれた CGI プログラムを使用して Web インターフェイスを自分で書きました。ここでは Mini_httpd を使用します。当初は nginx をインストールしたかったのですが、リソースが限られているため、Web 管理インターフェイスにアクセスできるのはもっと簡単だと思いました。
CGI アプリケーションは実行されていますが、ユーザー名とパスワードを入力するページを開いたときにポップアップ表示される共通ルーティング ダイアログ ボックスをどのように実現するかという疑問が生じます。
ここでは主に、HTTP プロトコルの知識の 1 つである HTTP 基本認証を使用します。
サーバーは、次のようなヘッダー情報を送信することで認証リクエストを実装します:
コードをコピー コードは次のとおりです:
HTTP/1.0 401 Authorization Required
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
上記の要件を考慮して、次の Python を使用しましたCGI コード内:
コードをコピー コードは次のとおりです:
def check_login():
importbase64
if "Authorization" in os.environ:
try:
cred =base64.b64decode(os.environ['Authorization'].split(' ')[1])
ユーザー名、password = cred.split(":")
if db_validate_user(username, password): # ここでデータベースのユーザー名とパスワードを照合します
return True
ただし、
pass
print 'ステータス: 401 Unauthorized '
print 'Pragma: no-cache'
print 'Content-Type: text/html'
print 'WWW-Authenticate: Basic realm="My Wireless Router"'
print
print """
認証されていません
< body>
< ;h1>認証されていません。