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

2016-05-14 14:20:56 +08:00
 MyLeoWind
给这些路由都加上 if+redirect 感觉很麻烦,我是不是该自己写个装饰器啊?
PS:v2ex 的注册( http://v2ex.com/signup )和登录页面( http://v2ex.com/signin )都可以被已登录用户访问到,你们觉得这样合适么?
3805 次点击
所在节点    Python
9 条回复
kethylar
2016-05-14 14:24:29 +08:00
flask_principal
EricNirvana
2016-05-14 14:31:37 +08:00
自己做个权限拦截的装饰器呗~
MyLeoWind
2016-05-14 14:38:09 +08:00
@EricNirvana 我想的就是自己写个装饰器哦。只是想请教大家有没有现成的方法,比如说我现在已经用 before_request 装饰器来现在只有登录用户可以访问了。
MyLeoWind
2016-05-14 14:41:14 +08:00
@kethylar 已经用了 flask-login 了。。
EricNirvana
2016-05-14 14:45:29 +08:00
@MyLeoWind 按照你的需求,需要细化到接口级别,以及对于不同的身份,可访问到的接口也不一样,所以可能权限这边需要自己来实现。
另外,有个小建议,如果已经登陆了,登陆界面可能访问不到?取而代之的应该是用户信息界面:)
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
2016-05-14 15:53:53 +08:00
Allianzcortex
2016-05-14 17:41:11 +08:00
我想说的已经被 @awanabe 说了…… @decorator 是个好东西
codeface
2016-05-15 12:45:18 +08:00
装饰器+ 1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/278612

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX