usersモジュールを使ったサインイン
Using the Users Service
Using Users
SDK提供のwebappモジュールと同じようにusersというモジュールを使うと、ユーザーアカウントを制御できる。
import wsgiref.handlers
from google.appengine.api import users
from google.appengine.ext import webappclass MainPage(webapp.RequestHandler):
def get(self):
user = users.get_current_user()if user:
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, ' + user.nickname())
else:
self.redirect(users.create_login_url(self.request.uri))def main():
application = webapp.WSGIApplication(
[('/', MainPage)],
debug=True)
wsgiref.handlers.CGIHandler().run(application)if __name__ == "__main__":
main()
The Users API
user = users.get_current_user()
get_current_user()で現在サインイン中のユーザーを返している。サインインしているユーザーがいない場合はNoneを返す。
if user:
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, ' + user.nickname())
サインインしているユーザーがすでにいる場合、この部分が処理され、
“Hello, [ユーザー名]”と画面に出力される。
else:
self.redirect(users.create_login_url(self.request.uri))
未サインインの場合、create_login_url関数によりGoogleのアカウントサインインページにリダイレクトされる。
サインアウトは?
このサンプルでは、1度サインインするとプロセスを再起動するまでサインイン状態が維持される。
サインアウトをするには、以下のようにするとOKみたいですね。
if user:
self.response.headers['Content-Type'] = 'text/html'
self.response.out.write('Hello, %s (<a href=\"%s\">sign out is here</a>)' %
(user.nickname(), users.create_logout_url("/")))
このモジュールを使うと、認証制のWebアプリケーションが簡単に構築できるようになるのかな?