2014-05-16 103 views
0

我遇到了Sails 0.9.16中的政策/路線問題。無論我做什麼,/用戶路徑仍然不受保護。很明顯,我正在做一些不正確的事情。Sailsjs政策沒有生效

我有以下途徑:

'/': { 
    view: 'home/index' 
}, 

'get /login': { 
view: 'login' 
}, 

'post /login': { 
    controller: 'UserController', 
    action: 'login' 
}, 

和以下政策:

module.exports.policies = { 
    '*' : false, 
    user : { 
    '*': 'isAuthenticated' 
    }, 
    login : { 
    '*' :true 
    }, 
} 

從路線和政策,你可以看到,我想有/登錄路由保護,和/用戶/ *路徑受保護。我的isAuthenticated.js是由一個新的帆船項目創建的股票。

UserController正確匹配密碼並設置req.session.authenticated = true。

我失去了如何解決這個問題?

回答

5

AFAIK,Sails的政策正在應用於每個控制器/操作,而不是每個路由。此外,檢查here正確的結構。所以,你的config/policies.js應該成爲這樣的:

module.exports.policies = { 
    UserController: { 
    '*': 'isAuthenticated', 
    login: true 
    } 
} 
+0

沒錯,我在想這麼多小時!我認爲有點誤導這樣一個事實,即默認情況下,sails帶有/({view:「homepage」})的默認路由(因此沒有策略將適用於/)。 –

+0

@DiegoPamio真實的故事。另一方面,基於視圖的路由選擇應該主要處理靜態內容,比如關於免責聲明的頁面類型,這通常是不受保護的。 – bredikhin

+0

那麼是否有可能阻止所有傳入的請求(用於測試目的)?即使我將'*'設置爲false,它也不起作用。如果我想實現這一目標,我應該將主頁封裝在控制器中,而不是將其映射到路由中的靜態文件中? –

0

由於帆的0.11策略可以應用到custom routes:與政策

'/foo': {policy: 'myPolicy'} 

藍圖路線:與政策

'/foo': [{policy: 'myPolicy'}, {blueprint: 'find', model: 'user'}] 

查看路線:

'/foo': [{policy: 'myPolicy'}, {view: 'foobar'}]