欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

flask学习 Flask Principal翻译(未完)

程序员文章站 2022-07-12 17:26:44
...

Flask Principal

“I am that I am”   “我就是我”

简介

Flask Priincipal提供了两种简单的服务,通常用这两种web应用中:

1.权限认证

2.用户信息管理


例如,一个权限认证机制采用 OAUTH,使用flask-oauth ,用户信息存储在关系数据库中。框架使用signal消息作为应用接口(松耦合)。


框架主要部分包含身份(Identity),需求(Needs),权限(Permission),和包含身份信息上下文环境(IdentityContext)

 

 

  1. Identity,标志一个用户,这个用户可能存储或者保存在多中地方,例如session中,每个请求都可以获取这个用户的权限信息。 Identity 是用户在系统中的标志,他包含了用户的访问权限。
  2. Needs 是一个细粒度访存取控制权限,他代表一个特殊的操作权限,如 “管理员角色”,“可以编辑博客帖子”。Needs 通常是一个tuple。Needs通常被设计为“角色”,“用户”等。例如:tuple (“role”、“admin”)  这个tuple表明了一个admin角色的权限。  Needs是权限列表(set),一个用户拥有一个访问控制权限列表,表明用户可以做那些操作权限。
  3. Permission用一个set表示,包含了对资源的访问控制。
  4. IdentityContext 是包含了用户权限的上下文环境,可以昨晚context manager 或者 decorator使用。
flask学习  Flask Principal翻译(未完)
            
    
    博客分类: python flask 

Protecting access to resources(资源访问)


Flask-Principal的使用者可以容易的将用户的访问权限定义为 python 装饰器或者上下文管理器。例子:
from flask import Flask, Response
from flaskext.principal import Principal, Permission, RoleNeed

app = Flask(__name__)

# load the extension
principals = Principal(app)

# Create a permission with a single Need, in this case a RoleNeed.  创建一个简单 RoleNedd权限。
admin_permission = Permission(RoleNeed('admin'))

# protect a view with a principal for that need ()
@app.route('/admin')
@admin_permission.require()
def do_admin_index():
    return Response('Only if you are an admin')

# this time protect with a context manager
@app.route('/articles')
def do_articles():
    with admin_permission.require():
        return Response('Only if you are admin')


 

 

相关标签: flask