Отвечу на вопросы один за другим:
1-
Это должно быть сделано с помощью ОС»брандмауэра (с помощью IPTables, например, если вы на Linux)
2-
Если вы ограничиваете доступ к приложению с помощью брандмауэра, вам может и не понадобиться это делать. Но если вам действительно нужно:
Сегодня нет хорошего способа сделать это, потому что вы не можете отключить authentication REST API. Обходной я предлагаю следующим образом (но я не думаю, что это будет работать, если вы используете активный каталог):
Добавить обработчик запроса для аутентификации /login
где вы сделать что-то вроде:
function login(request,response){
var ip = request.remoteAddress;
if(! isIPAuthorized(ip)){
response.statusCode = 403;
return;
}
sessionStorage["login-request"] = true;
/*
* Your login code here
* For instance you can use loginByPassword, createUserSession ..
*/
sessionStorage["login-request"] = false;
}
Внутри вашего Login Listener
вы можете проверить, если запрос Логин пришел от вас заказ входа на функцию или нет, проверив sessionStorage
:
if(!sessionStorage["login-request"]){
return {
"error" : 1024,
"errorMessage" : "Unautorized Login Attempt"
}
}
Таким образом, любая попытка входа в систему с использованием API аутентификации REST по умолчанию, если IP-адреса не проверены, будет отклонена.
спасибо за ваш ответ Хамза. есть ли способ доступа к объекту 'request' в пользовательском обработчике входа (внутри файла required.js) решения? – Stefan
Сегодня это невозможно. Я расскажу об этом с командой, чтобы узнать, можем ли мы иметь что-то вроде 'httpServer.getRequest()' для доступа к запросу, прикрепленному к текущему потоку, как [HttpRequest] (http://doc.wakanda.org/home2.en .html #/HTTP-Request-Handlers/HTTPRequest.201-803366.en.html) – hamzahik
, что было бы здорово и открыло бы много возможностей. спасибо – Stefan