我想在flask-admin中区分可访问性与视图(索引,创建,编辑)。它可以通过覆盖方法在所有关于特定模型的视图的级别上完成:is_accessible。
def is_accessible(self):
return current_user.is_authenticated # using flask-login
我需要一些用户能够浏览数据,但无权创建新记录。在其他用户应该能够创建 并编辑记录。任何帮助将不胜感激。
解决方案
我已经覆盖了每个视图之前调用的_handle_view方法。
def _handle_view(self, name, **kwargs):
if not current_user.is_authenticated:
return self.unauthorized_access()
permissions = self.get_permissions(name)
if not current_user.can(permissions):
return self.forbidden_access()
return None #access granted
答案 0 :(得分:2)
它没有很好的文档,但我认为你可以覆盖ModelView类上的sqoop import jdbc:mysql://localhost/mysql --username root --password cloudera
--table uberdata --hbase-table myuberdatatable --column-family trip_details
--hbase-row-key base -m 1**
方法来获得你想要的行为。 API文档没有对此进行太多说明,但我在changenotes引入时发现了一个更好的示例:
您可以控制哪些操作可用于当前请求 重写is_action_allowed方法:
is_action_allowed
我自己没有试过这个,所以我无法证明这个例子是否真的有效而没有其他变化。
答案 1 :(得分:0)
Flask-User
似乎就是你想要的。您指定了一个UserRoles
类,一个Roles
类和一个User
类。您将UserRole
分配给User
,然后在is_accessible
方法中,可以根据您的角色区分您要执行的操作(读/写/编辑)。
https://pythonhosted.org/Flask-User/
# Define User model
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(50), nullable=True, unique=True)
...
roles = db.relationship('Role', secondary='user_roles',
backref=db.backref('users', lazy='dynamic'))
# Define Role model
class Role(db.Model):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(50), unique=True)
# Define UserRoles model
class UserRoles(db.Model):
id = db.Column(db.Integer(), primary_key=True)
user_id = db.Column(db.Integer(), db.ForeignKey('user.id', ondelete='CASCADE'))
role_id = db.Column(db.Integer(), db.ForeignKey('role.id', ondelete='CASCADE'))