python - 所需的烧瓶角色不起作用
问题描述
我的代码在下面,我试图让烧瓶角色需要装饰器验证,但它似乎不起作用。我不确定我做错了什么。我尝试了一些不同的东西,但似乎都没有。
有没有人有任何经验或模板可以用于基于角色的访问控制?
app= Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:admin@localhost/sys'
app.config['SECRET_KEY'] = 'mysecret'
db = SQLAlchemy(app)
login = LoginManager(app)
login.init_app(app)
login.login_view = 'login'
LOGIN_URL='/login'
@login.user_loader
def load_user(user_id):
return Users.query.get(user_id)
class Users(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20))
password = db.Column(db.String(200))
roles = db.Column(db.String(100))
def is_authenticated(self):
return True
def is_active(self):
return True
def has_roles(self):
return True
@app.route('/vendorreview')
@login_required
@roles_required('admin')
def vendorreview():
return render_template('review.html')
@app.route('/register')
@login_required
def register():
return render_template('register.html')
@app.route('/submit')
def submit():
if not session.get('logged_in'):
return render_template('login.html')
else:
return render_template('submit.html')
return render_template('submit.html')
@app.route('/error')
def error():
return render_template('error.html')
@app.route("/login", methods=['GET', 'POST'])
def login():
error = None
x='customer'
if request.method == 'POST':
if request.form['username'] == 'admin' and request.form['password'] == 'admin' and x == 'business':
session['logged_in'] = True
# get_role = 'admin'
return redirect(url_for('index'))
#for customers
elif request.form['username'] == 'admin' and request.form['password'] == 'admin' and x == 'customer':
session['logged_in'] = True
return redirect(url_for('index'))
else:
error = 'Invalid Credentials. Please try again.'
return render_template('login.html', error=error)
if __name__ == '__main__':
app.secret_key = os.urandom(12)
app.run(debug=True)
解决方案
推荐阅读
- batch-file - 如何创建可以从一组存根创建 .jar 文件的批处理脚本?
- node.js - EventStreams (SSE) - 向客户端广播更新。可能吗?
- html - 在css中如何在一个div之间居中一个div而不触及父div的属性,只改变子div的属性
- recommendation-engine - 什么时候使用用户-用户协同过滤,什么时候使用Item-Item协同过滤?
- woocommerce - 如何编写一个 foreach 循环来检查用户在 Woocommerce 中购买特定商品的次数?
- ssl-certificate - 如何使用 Selenium ChromeDriver 解决无效证书错误?
- javascript - Jquery mouseover 重新排列 div 中的类,然后用 mouseleave 重置
- google-apps-script - 谷歌脚本循环问题
- excel - 如何将数据移动到另一个工作表
- ruby-on-rails - ActionController::RoutingError(没有路由匹配 [POST]