データベース(データストア)を使うようになると、「どのユーザーにどれだけの機能を許可すべきか」ということを考えるようになります。例えばデータの作成(投稿)は誰でもできるが、削除は許可された人だけしかできない、というような具合ですね。
こうした
ユーザー認証のための機能は
「Users」というライブラリとして搭載されています。この機能は、
Googleアカウントの認証機能を利用する形で実装されています。つまり、ユーザー認証の必要があると、Googleアカウントのログイン画面に移動し、ログインしてから必要なページにアクセスを許可する、というようにするのです。
参考例として、先に作成したMyDataによる投稿プログラムを修正し、ユーザー認証でログインした人だけデータの削除が行えるようにしてみましょう。
まず、もっとも簡単なユーザー認証機能を使ってみましょう。先に作成したMyDataの表示プログラムを再利用します。冒頭に、以下のリストに上げた文を追加してください。これで、ユーザー認証関係の機能が使えるようになります。
続いて、'/'にアクセスしたとき、ログインしていないと表示されないようにしてみます。
MainPageの
get(self):メソッドのすぐ手前に、以下の一文を追加してください。
@login_required
この@で始まるものは
「アノテーション」と呼ばれるものです。これをつけることで、実行時にさまざまな処理を行わせることができるようになります。
今回、
login_requiredというアノテーションを使っています。これは、このgetへのアクセスが、ログインしないとできないようにするためのものです。これを記述されたページにアクセスをすると、自動的にログインページに移動し、そこでログインを行わないとページが表示されません。まったくコードを各必要もなく、このアノテーションを付けるだけでOKです。
ただし、これが使えるのは、
getのみです。,,B[postでのアクセスには使えないので注意してください。
また、GAEのサイトにデプロイした場合には、Googleアカウントのログイン画面が現れますが、ローカル環境で試す場合には下図のようなログイン画面が現れます。これは、ローカルで動作確認をするための「仮のログイン画面」です。デプロイすれば、ちゃんとGoogleのログイン画面に変わりますので心配は無用です。