jpassport
GitHub: https://github.com/liushaoming/jpassport
Рекомендуется посетить GitHub для получения доступа к другим распределённым проектам автора: https://github.com/liushaoming?tab=repositories
Как появился jseckill? Автор liushaoming ранее работал над крупным проектом бэкенда для корпоративного приложения социальной сети. В этом проекте он разработал модуль входа в систему. Первоначально проект был реализован с использованием Spring MVC, но впоследствии был переписан на более новую версию Spring Boot 2.X.
Проект успешно прошёл испытание высокой нагрузкой в условиях крупной социальной сети, что подтверждает его способность поддерживать масштабные интернет-проекты.
Шаги по использованию:
После успешного входа сервер возвращает токен клиенту. Все HTTP-запросы, требующие аутентификации, должны включать параметры userId и token в заголовках запроса. Пример запроса:
URL: http://localhost:20100/account/getInfo Тип: POST Заголовки: userId=5 token=069473bedcc609b0d25d6746c11760e5
Можно использовать Postman для тестирования.
false; } Passport passport = loginIntercepterService.getPassport(Long.valueOf(userIdStr)); String storedToken = passport.getToken(); if (StringUtils.isEmpty(storedToken)) { flushError(response, AuthResponseCode.TOKEN_EXPIRED, AuthResponseCode.TOKEN_EXPIRED_DESC); return false; } else if (!storedToken.equals(token)) { flushError(response, AuthResponseCode.TOKEN_INVALID, AuthResponseCode.TOKEN_INVALID_DESC); return false; }
else { flushError(response, AuthResponseCode.USER_ID_IS_NULL, AuthResponseCode.USER_ID_IS_NULL_DESC); return false; } // 被@AuthController注解的 结束
}
boolean flag = isPermission(request, response); logger.info("isPermission:" + flag); return flag; } Текст:
Будет проверяться, был ли текущий контроллер, к которому обращается клиент, помечен аннотацией @AuthController. Если он был помечен, то будет выполнена логика авторизации. Логика авторизации извлечёт значения userId и token из заголовков HTTP. Серверная часть будет искать правильный токен в Redis на основе userId (если его нет, он будет искать в базе данных, Redis ускоряет доступ к данным). Если сохранённый токен совпадает с токеном в заголовке, LoginInterceptor разрешит продолжить, и бизнес-логика MVC будет продолжена. В противном случае доступ будет отклонён, и код ошибки и описание кода будут возвращены клиенту в виде строки JSON.
Изначально их можно было поместить в тело HTTP-запроса (HTTP body). Однако, поскольку в теле запроса может быть много параметров, принадлежащих пользователю, их совместное размещение может привести к путанице. Более стандартным подходом является размещение этих разрешений в заголовках запросов.
На стороне HTTP-клиента они должны храниться в cookie, которые необходимо считывать при каждом запросе. На Android-клиенте их можно хранить в SharedPreferences.
Spring Boot подходит для быстрой сборки приложений на Spring. Кроме того, здесь своевременно обновляется до Spring Boot 2.X, что позволяет избежать необходимости обновления кода разработчиками. Это готовое решение «из коробки».
Способ связи | |
---|---|
Лидер | liushaoming |
liushaomingdev@163.com | |
944147540 |
Предложения по улучшению кода следует направлять через Issues. Присоединяйтесь к группе для обсуждения.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )