`

flask学习 Flask Principal翻译(未完)

阅读更多

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

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')


 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics