Page Contents

REVIEW COMMENT from AKT
Rand - based on community feedback, can we add Permissions to this page title? Authentication and Authorization makes sense to our enterprise folks, but not so much so to the small developer, much less than non-English native speaking folks.</div>

See also:

See also:

Most applications need to control who (or what) can access data or call services.  Typically, this involves requiring users to login to access protected data, or requiring authorization tokens for other applications to access protected data.

For a simple example of implementing LoopBack access control, see the GitHub loopback-example-access-control repository.

LoopBack apps access data through models (see Defining models), so controlling access to data means putting restrictions on models; that is, specifying who or what can read/write the data or execute methods on the models. 

权限控制 概念

LoopBack的权限控制是建立在如下这些核心内容的基础之上. 

术语 描述 职能 举例
Principal(规则) 一个可以被识别或验证的个体  代表一个需要请求受保护资源的个体 
  • User 用户
  • Application 应用
  • Role 角色(Role本身也是个principle)
Role(角色)

一组有着相同权限的Pricipals

主要为了将Priciple分组后赋予相同的权限 
  • 动态的 role: 
    • $everyone (每个用户都有的Role)
    • $unauthenticated (未认证的用户)
    • $owner (一个资源的拥有者)

  • 静态的 role: 
    • admin (一个实现定义好的管理员)
RoleMapping

赋予 Principle 相关的 Roles

静态地为Priciplals分配角色 
  • 为 id 是 1的用户赋予 role1
  • 'admin' role 赋予 role 1
ACL

访问控制表

定义了一个pricipal是否能对一个资源进行某种操作

  • 不允许 everyone 访问项目资源
  • 允许 'admin' 角色执行项目资源上的find()方法

一般过程

应用程序 实现 权限控制 的一般过程如下:

  1. 特殊的 user roles.  定义你的应用所必须的用户权限. 比如,你可以创建匿名的用户权限,鉴权后的用户,管理员等 .
  2. 为每个model和role,model方法定义访问权限.   比如,你可以让匿名用户可以读取一系列的银行,但是不能让他们做任何其他事情. LoopBack 模型有一系列自带的方法,每个方法都有自己的读和写的权限类型.本质上,这一步相当于为每个角色指定是否允许访问和每个模型+访问类型,见下面的例子。
  3. 实现鉴权逻辑: 在你的应用中,添加代码来创建新用户(注册),登录用户(获取和使用的身份验证令牌),和注销用户。