Sự hiểu biết của tôi về sự khác biệt giữa oauth_aware
và oauth_required
là aware
không bắt buộc ủy quyền, trong khi required
, nhưng đó không phải là những gì tôi thấy trong thực tế. Tôi có hai RequestHandlers webapp bên dưới, một trong số đó có phương thức get()
được trang trí với decorator.oauth_aware
và phương thức kia có decorator.oauth_required
. Tuy nhiên, khi tôi chạy cục bộ hoặc trên App Engine, cả hai ngay lập tức chuyển hướng đến luồng đăng nhập.OAuth2Decorator oauth_aware lực lượng xác thực
Mục tiêu là dành cho SplashHandler
để cung cấp cho người dùng một liên kết để cho phép nếu họ chưa làm như vậy và nếu có, hãy chuyển tiếp đến /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)
Cảm ơn điều này - điều đó có ý nghĩa rất nhiều. Tôi đồng ý rằng trường hợp sử dụng của tôi có lẽ là phổ biến hơn, nhưng tôi thiên vị (: Tôi sẽ xem xét nguồn gốc của 'oauth_aware' và viết của riêng tôi. Cảm ơn một lần nữa! –