我有@login_required
装饰器来装饰控制器动作.但是我的应用程序非常庞大,并且在许多不同的控制器文件中有大量路由.逐个去装饰每条路线似乎容易出错(我很容易错过)并且耗费时间.
有没有办法在整个应用程序中一次装饰所有路线?
我正在将身份验证从Web服务器(apache)移动到应用程序级别,这就是我遇到此问题的原因.
你可以走了相反的方式,并使用before_request
装饰要求的默认登录,并使用定制的装饰来标记那些路线并不需要登录,例如:
_insecure_views = [] @my_blueprint.before_request def require_login(): if request.endpoint in _insecure_views: return # check for login here def login_not_required(fn): '''decorator to disable user authentication''' endpoint = ".".join([some_blueprint.name, fn.func_name]) _insecure_views.append(endpoint) return fn @some_blueprint.route('/') @login_not_required def index(): pass
您可以将其包装到自己的派生蓝图/ Flask类中.
编辑:基本上最好的方法是使Flask-Login的login_required成为默认值