Sail.js官方文档阅读笔记(五)——api/policies/ 目录

policies在文件中的目录位置如下图所示:

5.1 总述

Sails中的policies是授权和使用控制的通用工具,它可以使你在运行一个动作之前执行一些逻辑,用来决定是否继续处理请求。最常见的用例便是为登录用户限制一些操作。

5.2 用policies保护action和controller

Sails有一个获取控制列表在config/policies.js目录下。这个文件用来将policies映射到action和controller中。

这个文件是描述性的,意味着它描述了应用的许可应该是什么样的,而不是它们是怎么工作的。这使得开发者更容易明白发生了什么,使当需要变更时应用更灵活。

这个文件是一个词典,它的属性和值依据policies会有所不同。

5.2.1 将policies应用于controller

样例如下:

module.exports.policies = {
  UserController: {
    // By default, require requests to come from a logged-in user
    // (runs the policy in api/policies/isLoggedIn.js)
    '*': 'isLoggedIn',

    // Only allow admin users to delete other users
    // (runs the policy in api/policies/isAdmin.js)
    'delete': 'isAdmin',

    // Allow anyone to access the login action, even if they're not logged in.
    'login': true
  }
};

5.2.2 将其应用于单独的行为

样例如下:

module.exports.policies = {
  'user/*': 'isLoggedIn',
  'user/delete': 'isAdmin',
  'user/login': true
}

5.2.3 以计划的动作使用policies

样例如下:

module.exports.policies = {
  UserController: {
    // Apply the 'isLoggedIn' policy to the 'update' action of 'UserController'
    update: 'isLoggedIn'
  }
};

或者

module.exports.policies = {
  'user/update': 'isLoggedIn'
};

5.2.4 全局policies

样例:

module.exports.policies = {
  '*': 'isLoggedIn',
  'user/login': true
};

5.3 固定的policies

Sails提供两种固定的policies可以被应用于全局,某个controller或者action。

true:公有访问

false:禁止访问

'*' : true 是对于所有controller和action的默认的policy。在应用中,对应不想暴露的动作,将它设定为false是一个很好的尝试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值