У меня есть клиент Dart и Java-сервер. Я пытаюсь добавить безопасность вокруг своего приложения, поэтому сервер Java требует, чтобы пользователь был аутентифицирован перед доступом к данным. Если приходит вызов webservice и пользователь не аутентифицирован, серверные службы отправляют перенаправление с HttpResponseCode (401) обратно на клиентский вызов. Теперь у меня есть это, когда клиент может проанализировать request.status и увидеть 401, но он не обрабатывает перенаправление.Dart Client HttpRequest ошибка/проверка подлинности
Dart Код
HttpRequest request=new HttpRequest();
request.onReadyStateChange.listen((_) {
if (request.readyState == HttpRequest.DONE &&
(request.status == 200 || request.status == 0)) {
onHistoryLoaded(request.responseText);
}
});
request.open("GET", url);
request.send();
request.onLoadEnd.listen((e) => processRequest(request));
request.onError.listen((Object error)=>handleError(error));
void processRequest(HttpRequest request) {
var status = request.status;
print("status $status"); //401
}
void handleTheError(Error e){
print("handleTheError Request error: $e");
}
Java Server
//Tried both of these
// response.setStatus(HttpStatusCodes.STATUS_CODE_UNAUTHORIZED);
// response.sendRedirect(LOGIN_PAGE);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setHeader("Location", LOGIN_PAGE);
Любые предложения было бы здорово. Спасибо
Спасибо, я попробовал вариант 1 и прочитал repsoneHeader («Местоположение»), а затем вручную перенаправил его на эту страницу, и он работает. Я попробовал вариант 2 b/c, кажется, лучше. Поэтому на сервере я устанавливаю статус \t response.setStatus (307); response.setHeader («Местоположение», LOGIN_PAGE); но в клиентском приложении я получаю статус 200, и перенаправление не происходит автоматически. Я предполагаю, что 200 получили успешную переадресацию, но страница дротика не перешла к моему логину? – Brandon
О! Нет, страница дротика не изменится. Переадресация происходит в объекте HttpRequest, а не на главной странице. Итак ... вариант 1 - это путь, я думаю. – MarioP