比如这个问题:Best way to make Django's login_required the default
我现在使用的是Flask-Login
的login_required装饰器,有没有办法让它成为Flask
的默认行为
发布于 2012-11-19 17:48:44
我在我的instruments项目中做到了这一点。我使用before_request
装饰器:
@app.before_request
def check_valid_login():
login_valid = 'user' in session # or whatever you use to check valid login
if (request.endpoint and
'static' not in request.endpoint and
not login_valid and
not getattr(app.view_functions[request.endpoint], 'is_public', False) ) :
return render_template('login.html', next=request.endpoint)
然后,我为几个无需登录即可访问的位置创建了一个is_public()
装饰器:
def public_endpoint(function):
function.is_public = True
return function
发布于 2014-09-12 16:43:16
如果您正在使用蓝图,并且需要使用登录来保护整个蓝图,则可以将整个before_request
设置为要求登录。
这是我在CMS蓝图中使用的:
@cms.before_request
@login_required
def before_request():
if g.user.role != ROLE_ADMIN:
abort(401)
如果只需要检查用户是否已登录(而不是用户是否具有特权),则只需使用pass
函数即可
发布于 2020-07-14 00:06:18
我必须确保REST API的安全,我最终解决了这个问题:
@app.before_request
@auth.login_required
def login_required_for_all_request():
pass
(实际上我也使用了connexion框架,所以我不得不使用:@app.app.before_request )
https://stackoverflow.com/questions/13428708
复制相似问题