flask_admin 笔记二 授权和权限
权限当然就是让有应该权限的用户能执行某些操作,把没有权限的用户限制在外面。Flask-admin提供了几种方法来处理:
1, Http basic Auth
最简单的身份验证形式是HTTP基本身份验证。 它不会干扰你的数据库模型,也不需要你编写任何新的视图逻辑或模板代码。 所以,当你还在权限开发中,可以考虑作为一个测试的功能;或者可以简单运用于单用户的应用。
你可以参考https://flask-basicauth.readthedocs.io/en/latest/
但是这个组件无法一个登录界面整合到flask-admin中,功能也太简陋了。
2,自己集成权限框架(flask-login 或者 flask-httpAuth)
Flask 提供了一些访问规则允许你自己去定义一些访问的实现,你可以自己写,也可以集成想flask-login这些低层次的框架,然后自己实现访问控制。Flask-admin提供以下的实例:
class MicroBlogModelView(sqla.ModelView):
def is_accessible(self):
return login.current_user.is_authenticated
def inaccessible_callback(self, name, **kwargs):
# redirect to login page if user doesn't have access
return redirect(url_for('login', next=request.url))
具体的例子,可以查看 https://github.com/flask-admin/Flask-Admin/tree/master/examples/auth-flask-login.
使用这些底层次的框架的缺点就是要自己去实现所有的细节。
3,使用flask-sercurity
如果你想要一个更加精美的解决方案,你可以使用Flask-Security,它是一个更高级的库。 它具有许多内置的视图,用于执行用户注册,登录,电子邮件地址确认,密码重置等常见的功能。
唯一复杂的就是使内置的Flask-Security视图与Flask-Admin模板顺利集成,以达到一致性的用户体验。 为此,您需要覆盖内置的Flask-Security模板,并通过将以下内容添加到每个文件的顶部来扩展Flask-Admin基本模板:
{% extends 'admin/master.html' %}
现在,您需要手动传递Flask-Admin模板的一些上下文变量,以便从Flask-Security视图调用时页面能正确呈现。 定义一个security_context_processor函数将为你处理这个问题:
def security_context_processor():
return dict(
admin_base_template=admin.base_template,
admin_view=admin.index_view,
h=admin_helpers,
)
具体可以查看例子:
https://github.com/flask-admin/Flask-Admin/tree/master/examples/auth.
该示例只使用内置的注册和登录视图,但是您可以按照相同的方法来包含其他视图,例如忘记密码,发送验证邮件等。
flask_admin 笔记二 授权和权限的更多相关文章
- zookeeper笔记(二)
title: zookeeper笔记(二) zookeeper ALC权限控制 getAcl path 可以查看某个node的权限 设置权限: 2. world方式 setAcl <path&g ...
- 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...
- Oracle命令:授权-收回权限-角色
Oracle命令:授权-收回权限-角色 oracle grant 不论授予何种权限,每条授权(grant)语句总是由三部分组成: 1) 接受者部分是准备获得权限的一个或多个用户的列表. 2)关键字权限 ...
- webpy使用笔记(二) session/sessionid的使用
webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- 涂抹mysql笔记-数据库中的权限体系
涂抹mysql笔记-数据库中的权限体系<>能不能连接,主机名是否匹配.登陆使用的用户名和密码是否正确.mysql验证用户需要检查3项值:用户名.密码和主机来源(user.password. ...
- Shiro:学习笔记(2)——授权
Shiro:学习笔记(2)——授权 Shiro的三种授权方式 编程式: Subject subject = SecurityUtils.getSubject(); if(subject.hasRole ...
- 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX【转】
本文转载自:http://www.cnblogs.com/52php/p/5681751.html 四.更好一点的Hello World 没有最好,只有更好 从本小节开始,后面所有的构建我们都将采用 ...
- Linux学习笔记(二) 文件管理
了解 Linux 系统基本的文件管理命令可以帮助我们更好的使用 Linux 系统,以下介绍几个常用的文件管理命令 1.pwd pwd 是 Print Working Directory 的简写,用于显 ...
随机推荐
- touch创建文件
创建文件 在cs目录下创建1.txt和2.txt文件 touch ./文件名.txt 或者 touch /root/cs 文件名.txt 或者 echo > ./文件名.txt 或者 >. ...
- c语言:复合文字
复合文字的意义,相当于是在C语言中,为数组类型定义了一种类似于8之于int,'w'之于char一样的常量类型,所以从C99之后,可以在一些地方使用复合文字来代替数组使用. 复合文字的声明 (]){,, ...
- PHP类继承、接口继承关系概述
PHP类继承: PHP类不支持多继承,也就是子类只能继承一个父类,但是支持多层次继承,比如: class frist{ public function __construct(){ echo &quo ...
- python3中启动 uiautomator2viewer时报错解决办法
事先说明:我电脑里同时了安装了 python2和python3,启动对应版本时分别带上版本号,如何设置共存请参考:python2与python3共存 打开命令窗口,启动weditor : python ...
- 水壶-[Kruskal重构树] [解题报告]
水壶 本来从不写针对某题的题解,但因为自己实在是太蠢了,这道题也神TM的恶心,于是就写篇博客纪念一下 H水壶 时间限制 : 50000 MS 空间限制 : 565536 KB 评测说明 : 2s,51 ...
- Mysql 调优2个语句
一.explain 语句 查看语句的执行计划 二.查看具体每一步耗时 .; .执行SQL .show profiles; 获取2执行SQL的query_id .show profile for que ...
- JS编写日历控件(支持单日历 双日历 甚至多日历等)
前言: 最近几天都在研究日历控件编写,当然前提我要说明下,当然看过别人写的源码 所以脑子一热 就想用自己的编码方式 来写一套可扩展性 可维护性 性能高点的代码控件出来,就算练习练习下,所以前几天晚上下 ...
- 静态工厂方法和实例工厂方法及普通的bean
容纳你的bean bean工厂:最简单的容器,提供了基础的依赖注入支持.创建各种类型的Bean. 应用上下文(ApplicationContext):建立在bean工厂基础之上,提供系统架构服务. ...
- scapy学习笔记(4)简单的sniffing 嗅探
转载请注明:@小五义:http://www.cnblogs/xiaowuyi 利用sniff命令进行简单的嗅探,可以抓到一些简单的包.当不指定接口时,将对每一个接口进行嗅探,当指定接口时,仅对该接口进 ...
- Android 关于Activity的四种启动模式的简单介绍
Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standar ...