Mein Verständnis des Unterschieds zwischen oauth_aware
und oauth_required
ist, dass keine Autorisierung erzwingt, während required
tut, aber das ist nicht, was ich in der Praxis sehe. Ich habe die zwei Webapp RequestHandlers unten, von denen eine get()
Methode mit decorator.oauth_aware
und die andere mit decorator.oauth_required
verziert wird. Wenn ich lokal oder in App Engine aktiv bin, werden beide sofort zum Login-Flow umgeleitet.OAuth2Decorator oauth_aware zwingt Authentifizierung
Das Ziel ist für SplashHandler
, den Benutzer einen Link zu geben, um zu autorisieren, wenn sie nicht bereits sind, und wenn sie sind, dann weiterleiten an /tasks/
.
decorator = OAuth2Decorator(
client_id=settings.CLIENT_ID,
client_secret=settings.CLIENT_SECRET,
scope=settings.SCOPE,
user_agent='mytasks')
class SplashHandler(webapp.RequestHandler):
@decorator.oauth_aware
def get(self):
if not decorator.has_credentials():
self.response.out.write(template.render('templates/convert.html',
{'authorize_url': decorator.authorize_url()}))
else:
self.redirect('/tasks/')
class TasksHandler(webapp.RequestHandler):
@decorator.oauth_required
def get(self):
tasks = get_tasks()
tasks.sort(key=lambda x: x['due'])
self.response.out.write(template.render('templates/index.html',
{'tasks': tasks}))
application = webapp.WSGIApplication(
[('/', SplashHandler), ('/tasks/', TasksHandler)], debug=True)
Danke dafür - das macht sehr viel Sinn. Ich würde zustimmen, dass mein Anwendungsfall wahrscheinlich häufiger ist, aber ich bin voreingenommen (: Ich werde mir die Quelle für 'oauth_aware' ansehen und meine eigene schreiben. Nochmals vielen Dank! –