Kay チュートリアルでも紹介されていますが、ログイン必須のビューを実装するなら、kay.auth.decorators.login_required デコレーターを使うのが手っ取り早いです。
from kay.auth.decorators import login_required @login_required def index(request): return render_to_response('myapp/index.html', {'message': _('Hello')})
ただ、このデコレーターはメソッドとして実装したビューにのみ対応していて、クラスとして実装したビューには対応していません。残念。ビューをクラスで実装している場合どうすれば…。
仕方ないので、BaseHandler 派生クラス用の login_required デコレータを自作して使っています。
from werkzeug.exceptions import Forbidden from kay.utils import create_login_url def login_required(original_func): def decorated_func(self, *args, **kwargs): if self.request.user.is_anonymous(): if self.request.is_xhr: return Forbiden() else: return redirect(create_login_url(self.request.url)) return original_func(self, *args, **kwargs) return decorated_func class IndexHandler(BaseHandler): # 自作のデコレーターを使用 @login_required def get(self): return render_to_response('myapp/index.html', {'message': _('Hello')}) index = IndexHandler()
自作と言っても、kay.auth.decorators.login_required のソースコードをコピーし、引数や request まわりを修正しただけの簡単なものですけど。
でも、せっかくビューをクラスで実装できるのだから、クラス用の login_required デコレーターも Kay に標準で欲しいですね。