Skip to content

Instantly share code, notes, and snippets.

@wasnot
Created December 5, 2016 01:39
Show Gist options
  • Save wasnot/b02fd3220d197a18f2caa9a4a4d05631 to your computer and use it in GitHub Desktop.
Save wasnot/b02fd3220d197a18f2caa9a4a4d05631 to your computer and use it in GitHub Desktop.
GAE/pyでGoogleでもOAuthでもないログインを実装 ref: http://qiita.com/wasnot/items/029b94bc7ba9f189e8d4
import webapp2
from models.user import User
webapp2_config = {
'webapp2_extras.auth': {
'cookie_name': 'sid',
'user_model': User,
},
'webapp2_extras.sessions': {
'secret_key': 'your secret session key',
'session_max_age': 60*60*24*30,
}
}
app = webapp2.WSGIApplication([
('/test', TestHandler),
('/delete', DeleteHandler),
], debug=True, config=webapp2_config)
from google.appengine.ext import ndb
import webapp2_extras.appengine.auth.models as auth_models
class User(auth_models.User):
gender = ndb.StringProperty()
import webapp2
from views.base user_required
class TestHandler(webapp2.RequestHandler):
@user_required
def get(self):
# ログイン済みじゃないと見れないページ
self.render_template('authenticated.html')
def user_required(handler):
# ログイン中じゃない場合はログインページに遷移するなどします。
def check_login(self, *args, **kwargs):
auth = self.auth
if not auth.get_user_by_session():
self.redirect(self.uri_for('login'), abort=True)
else:
return handler(self, *args, **kwargs)
return check_login
class LogoutHandler(BaseJsonHandler):
def get(self):
user = self.auth.get_user_by_session()
if user:
self.auth.unset_session()
return self.make_base_response()
else:
return self.make_error_response('not logged in')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment