2017-05-09 55 views
-1

我需要阻止每個IP地址訪問我的網站,除了我自己提供的一個或兩個IP。我嘗試了很多模塊,但似乎沒有任何工作。如何在Express中使用IP的白名單?

var express = require('express') 
var AccessControl = require('express-ip-access-control'); 
var app = express() 

app.get('/', function (req, res) { 
    res.send('Hello World!') 
}) 

var middleware = AccessControl(options); 
app.use(AccessControl(options)); 

var options = { 
    mode: 'deny', 
    denys: [], 
    allows: ['**8.1**.1.**'], 
    forceConnectionAddress: false, 
    log: function(clientIp, access) { 
     console.log(clientIp + (access ? ' accessed.' : ' denied.')); 
    }, 

    statusCode: 401, 
    redirectTo: '', 
    message: 'Unauthorized' 
}; 

app.listen(3000, function() { 
    console.log(' app listening on port 3000!') 
}) 

上運行,並且從我上面的代碼中訪問我的網站我收到的控制檯消息

::ffff:127.0.0.1 accessed. 
::ffff:127.0.0.1 accessed. 
::ffff:127.0.0.1 accessed. 
::ffff:127.0.0.1 accessed. 

任何幫助嗎?

+0

我不明白你的代碼,清楚地說明 –

+1

[閱讀精美手冊](https://www.npmjs.com/package/express-ip-access-control#allow-mode-whilelist):實施一個白名單模式應該是_「允許」_。 – robertklep

+0

我還沒有看到你把任何ip放在你的'允許' – Beginner

回答

2

您需要在使用之前定義您的options。否則,您將undefined傳遞到app.use(AccessControl(options))

不知道這是如何爲您編譯的,但將以下行添加到腳本的頂部可能有助於顯示更多的錯誤,這些錯誤將有所幫助。

'use strict'; 

其次,根據express-ip-access-control文檔:

'allow'模式(Whilelist):

默認拒絕,只允許在白名單中(allows)IP地址,而不是排除由黑名單(denys)。

所以從'deny'改變options.mode'allow'

+0

仍無法列入白名單。 – Jagadeesh

+0

@Jagadeesh請詳細說明。 – Qix

+0

VAR選項= { 模式: '允許', 丹尼斯:[], 允許:[ '** 8.1 ** ** 1。'], forceConnectionAddress:假, 日誌:功能(clientIp,訪問) console.log(clientIp +(access?'accessible。':'denied。')); }, statusCode:401, redirectTo:'', message:'Unauthorized' }; var middleware = AccessControl(options); app.use(AccessControl(options)); 尚未列入白名單。 – Jagadeesh