首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将烧瓶登录的login_required设为默认设置的最佳方法

将烧瓶登录的login_required设为默认设置的最佳方法
EN

Stack Overflow用户
提问于 2012-11-17 15:38:15
回答 3查看 13.4K关注 0票数 32

比如这个问题:Best way to make Django's login_required the default

我现在使用的是Flask-Loginlogin_required装饰器,有没有办法让它成为Flask的默认行为

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-19 17:48:44

我在我的instruments项目中做到了这一点。我使用before_request装饰器:

代码语言:javascript
复制
@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()装饰器:

代码语言:javascript
复制
def public_endpoint(function):
    function.is_public = True
    return function
票数 41
EN

Stack Overflow用户

发布于 2014-09-12 16:43:16

如果您正在使用蓝图,并且需要使用登录来保护整个蓝图,则可以将整个before_request设置为要求登录。

这是我在CMS蓝图中使用的:

代码语言:javascript
复制
@cms.before_request
@login_required
def before_request():
    if g.user.role != ROLE_ADMIN:
        abort(401)

如果只需要检查用户是否已登录(而不是用户是否具有特权),则只需使用pass函数即可

票数 16
EN

Stack Overflow用户

发布于 2020-07-14 00:06:18

我必须确保REST API的安全,我最终解决了这个问题:

代码语言:javascript
复制
@app.before_request
@auth.login_required
def login_required_for_all_request():    
    pass  

(实际上我也使用了connexion框架,所以我不得不使用:@app.app.before_request )

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13428708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档