V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
MyLeoWind
V2EX  ›  Python

在 flask 里有些路由不希望已登录用户访问我应该怎么做?

  •  
  •   MyLeoWind · 2016-05-14 14:20:56 +08:00 · 3804 次点击
    这是一个创建于 3119 天前的主题,其中的信息可能已经有所发展或是发生改变。
    给这些路由都加上 if+redirect 感觉很麻烦,我是不是该自己写个装饰器啊?
    PS:v2ex 的注册( http://v2ex.com/signup )和登录页面( http://v2ex.com/signin )都可以被已登录用户访问到,你们觉得这样合适么?
    9 条回复    2016-05-15 12:45:18 +08:00
    kethylar
        1
    kethylar  
       2016-05-14 14:24:29 +08:00
    flask_principal
    EricNirvana
        2
    EricNirvana  
       2016-05-14 14:31:37 +08:00
    自己做个权限拦截的装饰器呗~
    MyLeoWind
        3
    MyLeoWind  
    OP
       2016-05-14 14:38:09 +08:00
    @EricNirvana 我想的就是自己写个装饰器哦。只是想请教大家有没有现成的方法,比如说我现在已经用 before_request 装饰器来现在只有登录用户可以访问了。
    MyLeoWind
        4
    MyLeoWind  
    OP
       2016-05-14 14:41:14 +08:00
    @kethylar 已经用了 flask-login 了。。
    EricNirvana
        5
    EricNirvana  
       2016-05-14 14:45:29 +08:00
    @MyLeoWind 按照你的需求,需要细化到接口级别,以及对于不同的身份,可访问到的接口也不一样,所以可能权限这边需要自己来实现。
    另外,有个小建议,如果已经登陆了,登陆界面可能访问不到?取而代之的应该是用户信息界面:)
    awanabe
        6
    awanabe  
       2016-05-14 15:52:34 +08:00
    def require_no_login(f):
    @wraps(f)
    def wrapper(*args, **kwargs):
    if current_user.is_authenticated:
    if request.method == 'POST':
    return jsonify(success=False, error_msg='已经登录')
    return redirect('/')
    return f(*args, **kwargs)

    return wrapper
    awanabe
        7
    awanabe  
       2016-05-14 15:53:53 +08:00
    Allianzcortex
        8
    Allianzcortex  
       2016-05-14 17:41:11 +08:00
    我想说的已经被 @awanabe 说了…… @decorator 是个好东西
    codeface
        9
    codeface  
       2016-05-15 12:45:18 +08:00
    装饰器+ 1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1280 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:56 · PVG 01:56 · LAX 09:56 · JFK 12:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.