Sail.js官方文件閱讀筆記(五)——api/policies/ 目錄
阿新 • • 發佈:2018-12-23
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是一個很好的嘗試。