首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Flask-Login进行身份验证url路由

使用Flask-Login进行身份验证url路由
EN

Stack Overflow用户
提问于 2020-10-07 14:23:25
回答 1查看 63关注 0票数 1

我正在为我的项目使用flask-login。

对于我的uri,我使用

代码语言:javascript
复制
/user/<string:user_id>/ 

当我想要访问特定于某个用户的资源时。

问题是,flask-login只提供使用cookies的@login-required身份验证。也就是说,我只能检查用户是否已登录。因此,我必须创建一个单独的函数来防止用户访问具有不同user_id的urls。

例如,如果只使用@login-required来保护我的视图,那么id为user1的用户就可以访问/user/user2

我应该如何进行这种单独的身份验证,以检查当前用户是否有权访问特定的用户url?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-07 15:23:52

Flask-Login为您提供了一个current_user全局,您可以使用它来检查哪个用户正在访问某个端点并检索他们的id。使用它来决定用户是否有权访问某个页面。

然后,您的端点将变为

代码语言:javascript
复制
@login_required
@app.route('/user/<string:user_id>')
def user_account(user_id):
    if user_id == current_user.id:
        user = fetch_user_from_storage(user_id)

        return render_template('user_account.html', user=user)
    else:
        flash('You do not have access to this page.')
        # redirect user to another page

通过这种实现,用户#1将无法访问用户#2的数据,因为current_user.id只能匹配用户#1的id

有关current_user的更多信息,请参阅flask-logindocs中的第一个示例。

如果您需要更高级的访问控制,可以看看flask-securityflask-principal

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

https://stackoverflow.com/questions/64238325

复制
相关文章

相似问题

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