libro
www.tuyano.com
PythonによるGoogle App Engine(GAE)プログラミング入門

Usersによるユーザー認証とエンティティ操作 (1/6)

作成:2010-01-03 17:33
更新:2010-05-10 21:32

■ユーザー認証とUsers

データベース(データストア)を使うようになると、「どのユーザーにどれだけの機能を許可すべきか」ということを考えるようになります。例えばデータの作成(投稿)は誰でもできるが、削除は許可された人だけしかできない、というような具合ですね。

こうしたユーザー認証のための機能は「Users」というライブラリとして搭載されています。この機能は、Googleアカウントの認証機能を利用する形で実装されています。つまり、ユーザー認証の必要があると、Googleアカウントのログイン画面に移動し、ログインしてから必要なページにアクセスを許可する、というようにするのです。

参考例として、先に作成したMyDataによる投稿プログラムを修正し、ユーザー認証でログインした人だけデータの削除が行えるようにしてみましょう。

まず、もっとも簡単なユーザー認証機能を使ってみましょう。先に作成したMyDataの表示プログラムを再利用します。冒頭に、以下のリストに上げた文を追加してください。これで、ユーザー認証関係の機能が使えるようになります。

続いて、'/'にアクセスしたとき、ログインしていないと表示されないようにしてみます。MainPageget(self):メソッドのすぐ手前に、以下の一文を追加してください。
@login_required
この@で始まるものは「アノテーション」と呼ばれるものです。これをつけることで、実行時にさまざまな処理を行わせることができるようになります。

今回、login_requiredというアノテーションを使っています。これは、このgetへのアクセスが、ログインしないとできないようにするためのものです。これを記述されたページにアクセスをすると、自動的にログインページに移動し、そこでログインを行わないとページが表示されません。まったくコードを各必要もなく、このアノテーションを付けるだけでOKです。

ただし、これが使えるのは、getのみです。,,B[postでのアクセスには使えないので注意してください。

また、GAEのサイトにデプロイした場合には、Googleアカウントのログイン画面が現れますが、ローカル環境で試す場合には下図のようなログイン画面が現れます。これは、ローカルで動作確認をするための「仮のログイン画面」です。デプロイすれば、ちゃんとGoogleのログイン画面に変わりますので心配は無用です。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

from google.appengine.ext.webapp.util import login_required
from google.appengine.api import users

※関連コンテンツ

「PythonによるGoogle App Engine(GAE)プログラミング入門」に戻る