Usersによるユーザー認証とエンティティ操作 (1/6)
作成:2010-01-03 17:33
更新:2010-05-10 21:32
更新:2010-05-10 21:32
■ユーザー認証とUsers
データベース(データストア)を使うようになると、「どのユーザーにどれだけの機能を許可すべきか」ということを考えるようになります。例えばデータの作成(投稿)は誰でもできるが、削除は許可された人だけしかできない、というような具合ですね。
こうしたユーザー認証のための機能は「Users」というライブラリとして搭載されています。この機能は、Googleアカウントの認証機能を利用する形で実装されています。つまり、ユーザー認証の必要があると、Googleアカウントのログイン画面に移動し、ログインしてから必要なページにアクセスを許可する、というようにするのです。
参考例として、先に作成したMyDataによる投稿プログラムを修正し、ユーザー認証でログインした人だけデータの削除が行えるようにしてみましょう。
まず、もっとも簡単なユーザー認証機能を使ってみましょう。先に作成したMyDataの表示プログラムを再利用します。冒頭に、以下のリストに上げた文を追加してください。これで、ユーザー認証関係の機能が使えるようになります。
続いて、'/'にアクセスしたとき、ログインしていないと表示されないようにしてみます。MainPageのget(self):メソッドのすぐ手前に、以下の一文を追加してください。
今回、login_requiredというアノテーションを使っています。これは、このgetへのアクセスが、ログインしないとできないようにするためのものです。これを記述されたページにアクセスをすると、自動的にログインページに移動し、そこでログインを行わないとページが表示されません。まったくコードを各必要もなく、このアノテーションを付けるだけでOKです。
ただし、これが使えるのは、getのみです。,,B[postでのアクセスには使えないので注意してください。
また、GAEのサイトにデプロイした場合には、Googleアカウントのログイン画面が現れますが、ローカル環境で試す場合には下図のようなログイン画面が現れます。これは、ローカルで動作確認をするための「仮のログイン画面」です。デプロイすれば、ちゃんとGoogleのログイン画面に変わりますので心配は無用です。
こうしたユーザー認証のための機能は「Users」というライブラリとして搭載されています。この機能は、Googleアカウントの認証機能を利用する形で実装されています。つまり、ユーザー認証の必要があると、Googleアカウントのログイン画面に移動し、ログインしてから必要なページにアクセスを許可する、というようにするのです。
参考例として、先に作成したMyDataによる投稿プログラムを修正し、ユーザー認証でログインした人だけデータの削除が行えるようにしてみましょう。
まず、もっとも簡単なユーザー認証機能を使ってみましょう。先に作成したMyDataの表示プログラムを再利用します。冒頭に、以下のリストに上げた文を追加してください。これで、ユーザー認証関係の機能が使えるようになります。
続いて、'/'にアクセスしたとき、ログインしていないと表示されないようにしてみます。MainPageのget(self):メソッドのすぐ手前に、以下の一文を追加してください。
@login_requiredこの@で始まるものは「アノテーション」と呼ばれるものです。これをつけることで、実行時にさまざまな処理を行わせることができるようになります。
今回、login_requiredというアノテーションを使っています。これは、このgetへのアクセスが、ログインしないとできないようにするためのものです。これを記述されたページにアクセスをすると、自動的にログインページに移動し、そこでログインを行わないとページが表示されません。まったくコードを各必要もなく、このアノテーションを付けるだけでOKです。
ただし、これが使えるのは、getのみです。,,B[postでのアクセスには使えないので注意してください。
また、GAEのサイトにデプロイした場合には、Googleアカウントのログイン画面が現れますが、ローカル環境で試す場合には下図のようなログイン画面が現れます。これは、ローカルで動作確認をするための「仮のログイン画面」です。デプロイすれば、ちゃんとGoogleのログイン画面に変わりますので心配は無用です。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
from google.appengine.ext.webapp.util import login_required from google.appengine.api import users
※関連コンテンツ
「PythonによるGoogle App Engine(GAE)プログラミング入門」に戻る