1. 程式人生 > >Sail.js官方文件閱讀筆記(五)——api/policies/ 目錄

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是一個很好的嘗試。