本文简单介绍了一个以Flask-admin作为后台、Flask-BasicAuth作为简单登录方式的例子。主要解决的问题是:仅使用Flask-BasicAuth登录后台,而其他页面不需要登录即可查看。
示例代码
准备工作
安装flask/flask-admin/flask-basicauth/SQLAlchemy
1
2
3
4
5
$ pip install Flask
$ pip install Flask-Admin
$ pip install Flask-BasicAuth
$ pip install Flask-SQLAlchemy
$ pip install SQLAlchemy
运行项目
在项目根目录下创建app.py
文件,把示例代码粘贴过来并运行:
$ python app.py
打开浏览器
无需登录即可访问localhost:8000
打开admin后台
localhost:8000/admin,需要登录:
输入后台设置的密码username
和password
,即可登录后台:
退出登录
打开localhost:8000/logout
注意事项
- python2和python3版本的代码有所不同,主要是因为super()的用法不同。示例代码已涵盖python2和python3,如需python3,请注释掉python2。
- Flask-BasicAuth登录方式不安全,建议放在SSL下使用,或使用flask-login或flask-security。
- 使用wsgi和apache在服务器上运行时,需要在wsgi文件中添加
WSGIPassAuthorization On
,否则flask-basicauth会被apache忽略从而无法工作。
参考文章
- Secure flask-admin using flask-basicauth
- TypeError: super() takes at least 1 argument (0 given)
- How to access Apache Basic Authentication user in Flask