如何解决Vue js和Python flask API体系结构
我是vue和flask API计划的新手,打算使用Vue js前端和flask API来操纵日期来构建博客。
我有一些架构问题。在flask api中,我可以基于使用登录创建令牌auth,并将其共享给Vue进行访问。但是在flask api中,我正在处理数据,例如删除博客帖子,编辑帖子等。因此,如果端点暴露,请说http://127.0.0.1:5000/deletePost
有没有建议的体系结构?
我不确定这是否是一个有效的问题。我只是想了解这里的体系结构。假设我在mongo DB中有一个用户集合。因此,当用户使用有效的用户名和密码烧瓶登录时,将创建访问令牌,该令牌将传递给Vue并存储在本地存储中。现在有一条路线说删除帖子ID的帖子,我将从数据库中删除帖子。现在,如果公开了删除api,则有效的登录用户可以使用具有其访问令牌的任何帖子ID(请注意,我使用vue模板中的帖子ID作为标识符)来触发此删除api。如何保护它?
解决方法
由于您使用烧瓶登录,因此可以创建自己的用户模型。 只需从UserMixin和db.Model继承即可。在那里,您可以存储用户是否是管理员。
类似这样的东西:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(UserMixin,db.Model):
"""User account model."""
__tablename__ = 'flasklogin-users'
id = db.Column(
db.Integer,primary_key=True
)
name = db.Column(
db.String(100),nullable=False,unique=False
)
email = db.Column(
db.String(40),unique=True,nullable=False
)
password = db.Column(
db.String(200),primary_key=False,unique=False,nullable=False
)
is_admin = db.Column(
db.Boolean(),default=False
)
然后,您可以使用该类创建新用户,将其添加到登录时的会话中,并使用该类的实例调用login_user。然后,current_user应该使您可以访问该用户,并且可以简单地检查is_admin。如果您不是管理员,则只需返回带有和errorstatus的Response。
如果您打算拥有两个以上的角色,则可以使用字符串列代替,然后检查该角色。
如果这种情况经常发生,您可以创建一个装饰器来检查用户是否是管理员,然后将其放在行的前面。
编辑: 我会做的是这样的:
@app.route('/deletepost/<post_id>',methods=['POST'])
@login_required
def delete_post():
if not current_user.is_authenticated or not current_user.is_admin:
return Response(status=500)
如果这种情况经常发生,您可以将逻辑抽象成这样的装饰器:
def is_admin(fn):
def decorate(*args,**kwargs):
if not current_user.is_authenticated or not current_user.is_admin:
return Response(status=500)
return fn(*args,**kwargs)
您可以像这样使用它:
@app.route('/deletepost/<post_id>',methods=['POST'])
@login_required
@is_admin
def delete_post():
# do something
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。