`
cooler1217
  • 浏览: 380048 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

python flask应用 Principal 授权认证

 
阅读更多
'''
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)


分享到:
评论

相关推荐

    基于Python的Flask WEB框架实现后台权限管理系统

    这通常需要集成身份验证库,如 Flask-Login 或 Flask-Security,来处理用户的登录状态和授权。用户信息应存储在数据库中,如SQLite、MySQL或PostgreSQL,使用SQLAlchemy作为ORM(对象关系映射)工具可以方便地进行...

    使用python,flask+bootstrap5,打造浏览器版的学生信息管理系统

    Flask-Login和Flask-Principal等扩展可以用来实现这一功能,确保只有授权用户才能访问或修改学生数据。 8. **错误处理和日志记录**: 为了提高系统的健壮性,我们需要处理可能出现的错误,并记录操作日志。Flask提供...

    Flask图书信息管理系统(python+mysql)

    《Flask图书信息管理系统》是基于Python的Flask框架与MySQL数据库构建的应用程序,主要用于实现图书的借阅、管理以及用户交互功能。该系统具备以下几个关键模块和功能: 1. **图书借阅**:系统提供了图书借阅服务,...

    Flask+sqlite实现学生信息管理系统

    在Python Web开发领域,Flask是一个轻量级且灵活的框架,常用于构建小型到中型的应用。它以其简洁的API和易于上手的特点深受开发者喜爱。本资源利用Flask和SQLite数据库创建了一个学生信息管理系统,非常适合初学者...

    Flask框架Flask-Principal基本用法实例分析

    Flask-Principal是Flask微框架的一个扩展,它提供了身份认证(Identity)、需求(Needs)、权限(Permissions)以及身份上下文(IdentityContext)的概念,帮助开发者实现更复杂的访问控制。这个扩展使得在Flask应用...

    基于Auth Token及用户权限的Python Flask-Restful的Example+源代码+文档说明

    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的插件式开发工具

    **Python-FlaskPluginKit:基于Flask的插件式开发工具** Flask是一个轻量级的Python Web开发框架,以其简洁和灵活的设计理念深受开发者喜爱。然而,随着项目规模的扩大,代码组织和模块化变得至关重要。为了解决这...

    flask-principal:用于Flask应用程序的身份管理

    `Flask-Principal` 是一个针对Python的轻量级Web框架Flask的扩展,它为应用程序提供了强大的身份和权限管理功能。这个扩展使得开发者能够方便地处理用户、角色以及它们的权限关系,从而在Flask应用中实现复杂的访问...

    知了课堂Flask进阶和实战代码.zip

    同时,通过Flask-Principal或Flask-Security等扩展,可以实现基于角色的访问控制,对用户权限进行精细化管理。 六、错误处理与日志记录 Flask提供了基本的错误处理机制,可以自定义错误页面。同时,结合Flask-...

    Python基于Flask人力资源管理系统设计源码案例设计.zip

    Flask是一款轻量级的Web应用框架,它以其微服务架构和高度可扩展性在Python Web开发中占据了重要的地位。本案例将详细讲解如何利用Python和Flask构建一个人力资源管理系统。 1. Flask框架基础 Flask是基于Werkzeug...

    python+flask大型区块链论坛项目-BBS.zip

    可以使用Flask-Login库处理用户认证,Flask-Principal处理权限控制。 7. **区块链集成** 区块链部分可能涉及Ethereum、Hyperledger Fabric或其他平台。开发人员需要编写智能合约,用以执行论坛中的关键操作,如...

    毕业设计:基于Python和Flask的药物管理系统.zip

    此外,为了提高安全性,可能还涉及到用户认证(如Flask-Login)和权限控制(如Flask-Principal)。系统的数据统计部分可能需要用到数据分析库如Pandas或Matplotlib,以便对药品销售、库存状态等进行可视化展示。 总...

    FlaskWeb开发:基于Python的Web应用开发实战-学习笔记.zip

    5. **用户认证与授权**:Flask-Login和Flask-Principal扩展用于处理用户身份验证和权限管理。这部分内容会涵盖用户注册、登录、登出,以及角色和权限的设定。 6. **错误处理与日志记录**:理解如何处理HTTP错误,...

    flask-principal:烧瓶身份管理

    Flask-Principal是基于Python的Web开发框架Flask的一个扩展,专门用于实现应用程序中的权限管理和身份验证。这个库为Flask应用提供了灵活的身份和角色管理功能,使得开发者能够轻松地控制用户对不同资源的访问权限。...

    Flask-principal-example:了解烧瓶原理

    烧瓶(Flask)是一个轻量级的Python Web应用框架,它的设计简洁而灵活,适合快速开发小型应用或作为大型项目的基础。烧瓶的核心理念是“约定优于配置”,使得开发者可以快速上手,专注于编写应用程序逻辑,而不是...

    基于python和Flask的博客网站设计与实现.docx

    本论文旨在为专科和本科毕业生提供一个完整的、基于Python编程语言和Flask框架的博客系统设计与实现方案,旨在帮助学生理解和掌握Web应用开发的核心技术。 **第一章 简介** 1.1 研究背景 随着互联网技术的不断发展...

    Flask+Web开发实战,flaskweb开发实战pdf,Python源码.rar

    对于需要用户认证和授权的Web应用,Flask-Login和Flask-Principal等扩展将被引入,它们提供了一种简单的方式来管理用户的登录状态和权限控制。 除了这些核心功能,本书可能还会讨论Flask-RESTful,用于构建RESTful ...

    Flask+Web开发实战,flaskweb开发实战pdf,Python源码.zip

    6. **用户认证与授权**:学习如何实现用户注册、登录、权限控制等,可能涉及Flask-Login和Flask-Principal等扩展。 7. **错误处理与日志记录**:理解如何优雅地处理HTTP错误,以及如何设置和使用日志系统来跟踪应用...

    flask搭建微电影网站代码

    总之,这个微电影网站项目涵盖了从基础的Flask应用搭建,到数据库操作、模板渲染、用户认证等多个方面的知识点,是一个全面了解和实践Flask框架的好例子。通过阅读和分析代码,开发者可以学习到如何构建一个完整的...

    flask开发所需软件列表

    - **Flask-Principal**:用户权限管理扩展,实现角色和权限分配。 - **Flask-OpenID**:OpenID 身份验证支持。 - **Flask-OAuth**:OAuth 支持。 #### 章节七:非关系型数据库 - **MongoDB**:一种 NoSQL 数据库,...

Global site tag (gtag.js) - Google Analytics