Проверка подлинности на основе токенов в многостраничном многостраничном приложении - PullRequest
0 голосов
/ 14 марта 2019

Я создал веб-приложение, в котором пользователь вводит свой адрес электронной почты и пароль на странице входа. Когда кнопка входа в систему нажата, на сервер отправляется сообщение Ajax, содержащее адрес электронной почты и пароль. Как только сервер проверит правильность пароля, он устанавливает cookie-файл сеанса с идентификатором сеанса и возвращает статус HTTP OK. На стороне клиента, в случае успеха, «window.location» устанавливается в «private / home» (страница, которая защищена фильтром сервлета, который проверяет cookie сеанса и аутентифицирует клиента), и клиент может продолжать работу в обычном режиме. Однако для программирования мобильных приложений я понимаю, что файлы cookie не работают должным образом, и лучше поддерживать токены в заголовках HTTP между клиентом и сервером, чтобы поддерживать сеанс. Однако мой вопрос заключается в том, как мне реализовать это в многостраничном веб-приложении и перемещаться между страницами. Насколько я знаю, нет никакого способа установить заголовки, когда вы делаете 'window.location' или 'href'.

Код моей страницы входа в систему

$("#loginButton").click(function(){
        var emailText = $("#emailInput").val().trim() ; //get input from email field in form
        var passwordText = $("#passwordInput").val() ;//get input from password field in form
        var allPassed = true ;
        $("#emailErrorMessage").text("") ;
        $("#passwordErrorMessage").text("") ;
        if(emailText == "") {
            $("#emailErrorMessage").text("Please enter a valid email") ;
            allPassed = false ;
        }
        if(passwordText == "") {
            $("#passwordErrorMessage").text("Please enter a valid password") ;
            allPassed = false ;
        }
        if(allPassed) {
            $.ajax({
                  type: "POST",
                  url: "loginUser",
                  data: {email:emailText , password:passwordText} ,
                  success: function(data,status,xhr) {
                      window.location = "private/home" ;
                  },
                  error: function(xhr , status , error) {
                      $("#passwordInput").val("") ;
                      $("#passwordErrorMessage").text("Incorrect email or password") ;
                  }
            });
        }

    }) ;
...