'''
Created on 2012-6-14
@author: wenwen
'''
from flask import Flask, make_response, request, session, render_template, redirect, abort, current_app
from flask_principal import Principal, Permission, UserNeed, RoleNeed, Identity, AnonymousIdentity, identity_changed, identity_loaded
import simplejson as json
from bson import json_util
from datetime import datetime, timedelta
from logging import Formatter
import logging.handlers
import traceback
import paramiko
LOG_FILENAME = 'logs/admin.log'
handler = logging.handlers.RotatingFileHandler(LOG_FILENAME, maxBytes=100000000, backupCount=5)
handler.setFormatter(Formatter('%(asctime)s - %(name)s - %(levelname)s - %(process)d - Line:%(lineno)d - %(message)s'))
# application
app = Flask(__name__)
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
# load the extension
principals = Principal(app)
# Create a permission with a single Need, in this case a RoleNeed.
all_permission = Permission(RoleNeed('admin'),RoleNeed('operator'))
admin_permission = Permission(RoleNeed('admin'))
@app.before_request
def before_request():
print "----------------------------------------------------------------"
@identity_loaded.connect_via(app)
def on_identity_loaded(sender, identity):
identity.user = session.get("userinfo")
if session.get("userinfo"):
identity.provides.add(UserNeed(session.get("userinfo")['account']))
identity.provides.add(RoleNeed(session.get("userinfo")['roles']))
else:
print "***************"
@app.route("/logout", methods=['GET'])
def logout():
try:
session.pop("userinfo")
# Remove session keys set by Flask-Principal
for key in ('identity.name', 'identity.auth_type'):
session.pop(key, None)
identity_changed.send(current_app._get_current_object(), identity=AnonymousIdentity())
except Exception,e:
print e
return "logout"
@app.route("/auth", methods=['GET'])
def auth():
try:
user_info = {"account":"peng.zhou","roles":"admin"}
session["userinfo"] = user_info
identity_changed.send(current_app._get_current_object(),identity=Identity(user_info['account']))
return "login"
except Exception, e:
print e
@app.route("/cooler", methods=['GET'])
@admin_permission.require(http_exception=401)
def getAdminUserList():
return "hello"
#
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080)
分享到:
相关推荐
这通常需要集成身份验证库,如 Flask-Login 或 Flask-Security,来处理用户的登录状态和授权。用户信息应存储在数据库中,如SQLite、MySQL或PostgreSQL,使用SQLAlchemy作为ORM(对象关系映射)工具可以方便地进行...
Flask-Login和Flask-Principal等扩展可以用来实现这一功能,确保只有授权用户才能访问或修改学生数据。 8. **错误处理和日志记录**: 为了提高系统的健壮性,我们需要处理可能出现的错误,并记录操作日志。Flask提供...
《Flask图书信息管理系统》是基于Python的Flask框架与MySQL数据库构建的应用程序,主要用于实现图书的借阅、管理以及用户交互功能。该系统具备以下几个关键模块和功能: 1. **图书借阅**:系统提供了图书借阅服务,...
在Python Web开发领域,Flask是一个轻量级且灵活的框架,常用于构建小型到中型的应用。它以其简洁的API和易于上手的特点深受开发者喜爱。本资源利用Flask和SQLite数据库创建了一个学生信息管理系统,非常适合初学者...
Flask-Principal是Flask微框架的一个扩展,它提供了身份认证(Identity)、需求(Needs)、权限(Permissions)以及身份上下文(IdentityContext)的概念,帮助开发者实现更复杂的访问控制。这个扩展使得在Flask应用...
1. Flask-JWT & Flask-Principal 2. itsdangerous & Flask-Principal 3. Flask-Login & Flask-Principal 4. ... #运行 ``` pip install -r ./requirement.txt python manage.py ``` #测试 -------- 该资源内项目...
**Python-FlaskPluginKit:基于Flask的插件式开发工具** Flask是一个轻量级的Python Web开发框架,以其简洁和灵活的设计理念深受开发者喜爱。然而,随着项目规模的扩大,代码组织和模块化变得至关重要。为了解决这...
`Flask-Principal` 是一个针对Python的轻量级Web框架Flask的扩展,它为应用程序提供了强大的身份和权限管理功能。这个扩展使得开发者能够方便地处理用户、角色以及它们的权限关系,从而在Flask应用中实现复杂的访问...
同时,通过Flask-Principal或Flask-Security等扩展,可以实现基于角色的访问控制,对用户权限进行精细化管理。 六、错误处理与日志记录 Flask提供了基本的错误处理机制,可以自定义错误页面。同时,结合Flask-...
Flask是一款轻量级的Web应用框架,它以其微服务架构和高度可扩展性在Python Web开发中占据了重要的地位。本案例将详细讲解如何利用Python和Flask构建一个人力资源管理系统。 1. Flask框架基础 Flask是基于Werkzeug...
可以使用Flask-Login库处理用户认证,Flask-Principal处理权限控制。 7. **区块链集成** 区块链部分可能涉及Ethereum、Hyperledger Fabric或其他平台。开发人员需要编写智能合约,用以执行论坛中的关键操作,如...
此外,为了提高安全性,可能还涉及到用户认证(如Flask-Login)和权限控制(如Flask-Principal)。系统的数据统计部分可能需要用到数据分析库如Pandas或Matplotlib,以便对药品销售、库存状态等进行可视化展示。 总...
5. **用户认证与授权**:Flask-Login和Flask-Principal扩展用于处理用户身份验证和权限管理。这部分内容会涵盖用户注册、登录、登出,以及角色和权限的设定。 6. **错误处理与日志记录**:理解如何处理HTTP错误,...
Flask-Principal是基于Python的Web开发框架Flask的一个扩展,专门用于实现应用程序中的权限管理和身份验证。这个库为Flask应用提供了灵活的身份和角色管理功能,使得开发者能够轻松地控制用户对不同资源的访问权限。...
烧瓶(Flask)是一个轻量级的Python Web应用框架,它的设计简洁而灵活,适合快速开发小型应用或作为大型项目的基础。烧瓶的核心理念是“约定优于配置”,使得开发者可以快速上手,专注于编写应用程序逻辑,而不是...
本论文旨在为专科和本科毕业生提供一个完整的、基于Python编程语言和Flask框架的博客系统设计与实现方案,旨在帮助学生理解和掌握Web应用开发的核心技术。 **第一章 简介** 1.1 研究背景 随着互联网技术的不断发展...
对于需要用户认证和授权的Web应用,Flask-Login和Flask-Principal等扩展将被引入,它们提供了一种简单的方式来管理用户的登录状态和权限控制。 除了这些核心功能,本书可能还会讨论Flask-RESTful,用于构建RESTful ...
6. **用户认证与授权**:学习如何实现用户注册、登录、权限控制等,可能涉及Flask-Login和Flask-Principal等扩展。 7. **错误处理与日志记录**:理解如何优雅地处理HTTP错误,以及如何设置和使用日志系统来跟踪应用...
总之,这个微电影网站项目涵盖了从基础的Flask应用搭建,到数据库操作、模板渲染、用户认证等多个方面的知识点,是一个全面了解和实践Flask框架的好例子。通过阅读和分析代码,开发者可以学习到如何构建一个完整的...
- **Flask-Principal**:用户权限管理扩展,实现角色和权限分配。 - **Flask-OpenID**:OpenID 身份验证支持。 - **Flask-OAuth**:OAuth 支持。 #### 章节七:非关系型数据库 - **MongoDB**:一种 NoSQL 数据库,...