Moje zrozumienie różnicy między oauth_aware
i oauth_required
że aware
nie wymusza autoryzację, natomiast required
robi, ale to nie to co widzę w praktyce. Mam poniżej dwie aplikacje ApplicationHandlers, z których jedna z nich jest w stylu decorator.oauth_aware
, a druga z decorator.oauth_required
. Jednak gdy uruchomię lokalnie lub na App Engine, obie natychmiast przekierują do przepływu logowania.siły OAuth2Decorator oauth_aware uwierzytelniania
Celem jest dla użytkownika SplashHandler
nadanie użytkownikowi łącza do autoryzacji, jeśli jeszcze nim nie jest, a jeśli tak, to przesłanie dalej: /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)
Dzięki za to - to ma wiele sensu. Zgadzam się, że mój przypadek użycia jest prawdopodobnie bardziej powszechny, ale jestem stronniczy (: przyjrzę się źródłu 'oauth_aware' i napiszę. –