Пользовательская страница входа для постоянного пользователя

Пользовательская страница входа для постоянного пользователя

1. Вступление

Эта статья является продолжением наших текущихregistration with Spring Security series.

In this article, we are going to have a look at how to develop a custom login page for a user who is returning to our application. Пользователь будет встречен стандартным сообщением «Добро пожаловать…».

One way to identify if the user is returning to our website is to add a long-lived cookie (e.g. 30 days) after the user has successfully logged in. Чтобы разработать эту логику, нам нужно реализовать нашAuthenticationSuccessHandler, который добавляет cookie после успешной аутентификации.

Давайте создадим наш собственныйMyCustomLoginAuthenticationSuccessHandler и реализуем методonAuthenticationSuccess():

@Override
public void onAuthenticationSuccess(final HttpServletRequest request,
  final HttpServletResponse response, final Authentication authentication)
  throws IOException {
    addWelcomeCookie(gerUserName(authentication), response);
    redirectStrategy.sendRedirect(request, response,
    "/homepage.html?user=" + authentication.getName());
}

В центре внимания находится вызов методаaddWelcomeCookie().

Теперь давайте посмотрим на код для добавления файла cookie:

private String gerUserName(Authentication authentication) {
    return ((User) authentication.getPrincipal()).getFirstName();
}

private void addWelcomeCookie(String user, HttpServletResponse response) {
    Cookie welcomeCookie = getWelcomeCookie(user);
    response.addCookie(welcomeCookie);
}

private Cookie getWelcomeCookie(String user) {
    Cookie welcomeCookie = new Cookie("welcome", user);
    welcomeCookie.setMaxAge(60 * 60 * 24 * 30);
    return welcomeCookie;
}

Мы установили файл cookie с ключом“welcome” и значениемfirstName текущего пользователя. Срок действия файла cookie истекает через 30 дней.

Последним шагом является чтение файла cookie при каждой загрузке формы входа и получение значения для отображения приветствия. Это легко сделать с помощьюJavascript.

Во-первых, давайте добавим заполнитель“welcometext” для отображения нашего сообщения на странице входа:



...

Теперь посмотрим на соответствующиеJavascript:

function getCookie(name) {
    return document.cookie.split('; ').reduce((r, v) => {
        const parts = v.split('=')
        return parts[0] === name ? decodeURIComponent(parts[1]) : r
    }, '')
}

function display_username() {
    var username = getCookie('welcome');
    if (username) {
        document.getElementById("welcometext").innerHTML = "Welcome " + username + "!";
    }
}

Первая функция просто читает cookie, который был установлен, когда пользователь вошел в систему. Вторая функция манипулирует HTML-документом, чтобы установить приветственное сообщение, если cookie присутствует.

Функцияdisplay_username() вызывается в событииonload тегаHTML <body>:

4. Заключение

В этой быстрой статье мы увидели, как просто настроить пользовательский интерфейс, изменив поток аутентификации по умолчанию в Spring. Много сложных вещей может быть сделано на основе этой простой настройки.

Доступ к странице входа в систему для этого примера можно получить через URL/customLogin. Полный код этой статьи можно найти вover on GitHub.