探したんだけどサンプルが見つからなかった。
自分で作ってみたけどこんなカンジでいいのかな?
# -*- coding: utf-8 -*- from base64 import b64decode from google.appengine.ext import webapp class BasicAuthentication(webapp.RequestHandler): def get(self): # Basic認証 if self.__basicAuth(): self.response.out.write('認証されたよ!') else: code = 401 self.error(code) self.response.out.write(self.response.http_status_message(code)) def __basicAuth(self): # ヘッダの確認 auth_header = self.request.headers.get('Authorization') if auth_header: # 文字列のチェック auth = auth_header.split(' ') if len(auth) != 2 or auth[0] != 'Basic': return False info = b64decode(auth[1]).split(':') if len(info) != 2: return False # ユーザー名とパスワードの照合 if info[0] == 'username' and info[1] == 'password': return True # 認証の要求 self.response.set_status(401) self.response.headers['WWW-Authenticate'] = 'Basic realm="BasicTest"'
base64デコードできる文字列かどうかも確認した方がいいかな…
追記
「google app engine basic認証」とかでググっていたのがいけなかった。
「django basic認証」でググればいくつか出てきた。
BASIC 認証 - Twisted Mind
そうか、try-exceptの例外処理を使えばもっとキレイに書けたんだー。