středa 16. října 2013

Omezení přístupu do AppEngine aplikace

Poměrně často narážíme na požadavek omezení přístupu uživatelů do aplikace na AppEngine.

Modelový příklad: Zákazník si přeje omezit přístup do aplikace tak, aby do ní mohli pouze uživatelé z domény xxx.cz, yyy.cz a fragaria.cz.

Google nabízí pouze omezení přístupu buď na libovolnou (ale pouze jednu) Google Apps doménu nebo na jakéhokoliv uživatele z Google Apps domény bez omezení.

První možnost tedy použít nemůžeme, druhou používáme k vynucení přihlášení uživatele – omezení na Google Apps domény je pro nás OK.

Postup, který jsme používali dosud je podobný jako například v tomto článku. Připravíme si anotaci @user_required, která zkontroluje uživatele a tu "nalepíme" na všechny metody příslušných HTTP handlerů. To ale znamená, že máme anotace rozeseté všude a je snadné jí někde zapomenout.

Dneska +Robin Gottfried přišel s mnohem elegantnějším řešením.
Využívá metodu __call__() z webapp2, přes kterou procházejí všechny requesty v aplikaci a kontrolu dělá tam.

Asi takhle:

Samozřejmě je nutné místo standardní WSGIApplication  použít vlastní podtřídu:

Žádné komentáře:

Okomentovat