gpt4 book ai didi

python - 如何将用户属性传递给 python 函数/路由 -- Flask

转载 作者:太空宇宙 更新时间:2023-11-04 02:38:50 25 4
gpt4 key购买 nike

所以我在 Flask 中创建了一个简单的网站,允许两种类型的用户。管理员和普通用户。我有一个名为“User”的类,它有一个属性“isUser”。然后我有一个路由调用“addMovie”,它接受一个参数“isUser”来检查当前用户是否有权添加电影。我该如何检查?截至目前,我将该属性设置为"is"的用户仍然可以添加电影。

class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(120))
last_name = db.Column(db.String(120))
email = db.Column(db.String(180), unique=True)
password = db.Column(db.String(255))
isUser = db.Column(db.String(10))
active = db.Column(db.Boolean())
confirmed_at = db.Column(db.DateTime())
roles = db.relationship('Role', secondary=roles_users,backref=db.backref('users', lazy='dynamic'))

@app.route('/addMovie/<isUser>', methods=['GET', 'POST'])
@login_required
def addMovie(isUser):
error = None
if(isUser == "Yes"):
error = "You must have Admin Privaledges to add a Movie/TV Show"
return redirect(url_for('index'))
else:
return render_template('addMovie.html', error=error)

最佳答案

我假设您正在使用 Flask-Login。你试过了吗current_user

然后您可以检查当前登录的用户是否是管理员。最后在需要管理功能的地方调用此方法。

from flask_login import current_user, login_required, LoginManager

@login_manager.user_loader
def load_user(id):
return User.query.get(int(id))

def require_admin():
if current_user.isUser:
abort(403)

@app.errorhandler(403)
def error_access_forbidden(error):
error_code = 403
error_message = "Sorry, access denied or forbidden!"
return render_template('4xx.html',
error_code = error_code,
error_message=error_message), 403

@app.route('/addMovie', methods=['GET', 'POST'])
@login_required
def addMovie():
require_admin()
error = None
return render_template('addMovie.html', error=error)

4xx.html 模板可能会显示错误代码、错误消息和重定向链接。这是处理 HTTP 错误的正确方法。您还可以实现其他 HTTP 错误。

这是我在我的项目之一中使用的示例错误页面:

error_404_demo

关于python - 如何将用户属性传递给 python 函数/路由 -- Flask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47151524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com