mirror of https://github.com/pallets/flask.git
parent
a59cbd4f52
commit
d18868bd17
|
|
@ -144,14 +144,22 @@ routing system it does not make much sense to decorate the class itself.
|
||||||
Instead you either have to decorate the return value of
|
Instead you either have to decorate the return value of
|
||||||
:meth:`~flask.views.View.as_view` by hand::
|
:meth:`~flask.views.View.as_view` by hand::
|
||||||
|
|
||||||
view = rate_limited(UserAPI.as_view('users'))
|
def user_required(f):
|
||||||
|
"""Checks whether user is logged in or raises error 401."""
|
||||||
|
def decorator(*args, **kwargs):
|
||||||
|
if not g.user:
|
||||||
|
abort(401)
|
||||||
|
return f(*args, **kwargs)
|
||||||
|
return decorator
|
||||||
|
|
||||||
|
view = user_required(UserAPI.as_view('users'))
|
||||||
app.add_url_rule('/users/', view_func=view)
|
app.add_url_rule('/users/', view_func=view)
|
||||||
|
|
||||||
Starting with Flask 0.8 there is also an alternative way where you can
|
Starting with Flask 0.8 there is also an alternative way where you can
|
||||||
specify a list of decorators to apply in the class declaration::
|
specify a list of decorators to apply in the class declaration::
|
||||||
|
|
||||||
class UserAPI(MethodView):
|
class UserAPI(MethodView):
|
||||||
decorators = [rate_limited]
|
decorators = [user_required]
|
||||||
|
|
||||||
Due to the implicit self from the caller's perspective you cannot use
|
Due to the implicit self from the caller's perspective you cannot use
|
||||||
regular view decorators on the individual methods of the view however,
|
regular view decorators on the individual methods of the view however,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue