1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/antcore-spring-boot-starter-security

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Spring-boot-starter-security

Проект представляет собой

Spring Boot — это фреймворк для разработки и тестирования программного обеспечения, который предоставляет разработчикам более дружественный распределённый механизм проверки прав доступа. Он значительно повышает эффективность проверки.

Maven metadata URI Hex.pm jdk

Руководство по использованию

Перейдите к руководству пример.

Координаты Maven-репозитория

<dependency>
    <groupId>cn.antcore</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
    <version>${Maven仓库最新版本}</version>
    <scope>compile</scope>
</dependency>

Основные возможности

Авторизация и аутентификация
  • UserDetails — пользовательские данные, которые включают уникальный идентификатор пользователя, имя пользователя, набор разрешений, которыми обладает пользователь, и набор ролей, которые имеет пользователь.
  • LoginSession — сеанс входа в систему, предоставляющий базовые функции входа и выхода из системы. После успешного входа система возвращает уникальный токен. Пример:
@PostRest(value = "login", login = false)
public ReturnT<String> login(HttpSession session, String username, String password) {
    // TODO 自己实现username和password的登录验证逻辑
    UserDetails details = new UserDetails(10010L, "Admin");
    details.setAuthority(Arrays.asList("index", "user"));
    details.setRoles(Arrays.asList("admin"));
    String token = ((LoginSession) session).loginSuccess(details);
    return ReturnT.success(token);
}
Выход из системы

Пример:

@GetRest(value = "logout")
public ReturnT<String> logout(HttpSession session) {
    session.invalidate();
    return ReturnT.success("success");
}
@GetRest(value = "logout")
public ReturnT<String> logout(HttpSession session) {
    LoginSession loginSession = (LoginSession) session;
    loginSession.logout();
    return ReturnT.success("success");
}
Получение информации о текущем пользователе

UserSession — предоставляет основные методы запроса информации о текущем вошедшем в систему пользователе, такой как идентификатор пользователя, имя пользователя и другие данные. Пример:

@GetRest(authority = {"index"}, roles = "admin", condition = "#session.getUserId() == 10010L")
public ReturnT<Serializable> index(HttpSession session) {
    UserSession userSession = (UserSession) session;
    return ReturnT.success(userSession.getUserId());
}
Проверка подлинности интерфейса

Описание функции: добавление перехватчика для обеспечения того, чтобы интерфейс мог быть доступен только после входа пользователя в систему. @Login — аннотация, которая определяет, требуется ли вход для доступа к интерфейсу. Параметр value может принимать значение true или false. Значение true означает, что интерфейс требует входа в систему для доступа, а значение false означает, что доступ к интерфейсу не требует входа. Пример:

@Login(value = false)
@PostMapping(value = "login")
public ReturnT<String> login(HttpSession session, String username, String password) {
    // TODO 登录逻辑
}
Перехват разрешений, ролей и пользовательских правил для интерфейсов

Описание функции: перехватчик, обеспечивающий доступ к интерфейсам только пользователям с определёнными разрешениями и ролями, а также проверку пользовательских правил. @ApiAuthorize — эта аннотация используется для проверки разрешений, ролей доступа и пользовательских правил интерфейса. Параметры value и authority определяют необходимые разрешения, а параметр roles определяет необходимые роли. Параметр condition позволяет задать пользовательское правило с использованием SpEL-выражений. Пример:

@ApiAuthorize(authority = {"index"}, roles = "admin", condition = "#session.getUserId() == 10010L")
public ReturnT<Serializable> index(HttpSession session) {
    // 此接口表达的意思是:用户需要 иметь разрешение index для доступа, причём этот пользователь должен быть администратором, и, наконец, userId этого пользователя должен быть равен 10010.
    // Три условия связаны отношением «и».
}
Расширение возможностей Rest-интерфейсов

Описание функции: объединение аннотаций @RequestMapping, @Login и @ApiAuthorize в одну аннотацию для уменьшения количества аннотаций на интерфейсе. Пример:

import cn.antcore.security.web.GetRest;
import cn.antcore.security.web.PostRest;
import cn.antcore.security.web.PutRest;
import cn.antcore.security.web.DeleteRest;
import cn.antcore.security.web.OptionsRest;
import cn.antcore.security.web.PatchRest;
import cn.antcore.security.web.HeadRest;
import cn.antcore.security.web.TraceRest;

@GetRest(value = {"", "/index"}, authority = {"index"}, roles = "admin", condition = "#session.getUserId() == 10010L")
public ReturnT<Serializable> index(HttpSession session) {
    // TODO 自定义逻辑
}

Конфигурационный файл

spring:
  security:
    session-time: 24h # Время истечения срока действия токена
    automatic-renewal: true # Автоматическое продление токена
    max-live: 1 # Максимальное количество одновременных подключений одного и того же пользователя
  redis: # Конфигурация Redis
    host: 127.0.0.1 
    port: 6379

Расширенные возможности

Стратегия генерации / чтения токенов
  • Описание функции: ... Стратегия генерации токена в сессии и передача токена на сервер

  • Стратегия генерации токена:

    • Описание: стратегия генерации токена для распределённой сессии, по умолчанию используется Redis в качестве хранилища данных.

    • Интерфейс: cn.antcore.security.session.SessionIdStrategy.

    • Реализация: класс cn.antcore.security.session.strategy.HeaderSessionIdStrategy.

    • Генерация токена происходит с помощью UUID. Токен передаётся на сервер через заголовок «X-Auth-Token».

  • Пользователь может реализовать собственную стратегию генерации токена, реализовав интерфейс SessionIdStrategy и предоставив реализацию Spring BeanFactory для управления.

Автоматическое продление срока действия токена

  • Описание: сервер автоматически продлевает срок действия токена после его использования.

  • Интерфейс и реализация по умолчанию:

    • Интерфейс: cn.antcore.security.session.refresh.SessionTimeoutRefresh.

    • Реализация: cn.antcore.security.session.refresh.RedisSessionTimeoutRefresh.

    • Продление срока действия токена запускается при вызове метода getSessionId в классе SessionIdStrategy.

  • Можно реализовать собственный механизм автоматического продления срока действия токена, создав реализацию интерфейса SessionTimeoutRefresh и предоставив её Spring BeanFactory.

Управление количеством активных сессий пользователя

  • Описание: когда пользователь создаёт новый токен, проверяется количество активных сессий. Если оно превышает максимальное значение, старые сессии удаляются.

  • Интерфейс и реализация по умолчанию:

    • Интерфейс: cn.antcore.security.session.max.MaxSession.

    • Реализация: cn.antcore.security.session.max.MaxSessionManager.

    • Проверка количества активных сессий запускается при успешном входе в систему (метод loginSuccess в классе LoginSession).

  • Для реализации собственного механизма управления количеством активных сессий необходимо создать реализацию интерфейса MaxSession и предоставить её Spring BeanFactory.

Расширенные возможности

  • Перехват состояния входа:

    • Функциональность: перехват, запускаемый аннотацией @Login.

    • Интерфейс и реализация:

      • Интерфейс: cn.antcore.security.filter.LoginStatusFilter.
      • Реализация: cn.antcore.security.filter.RedisLoginStatusFilter.
    • Перехват проверяет, вошёл ли пользователь в систему, используя метод isLogin в классе UserSession.

  • Перехватчик прав доступа:

    • Функциональность: перехват, запускаемый аннотацией @ApiAuthorize.

    • Интерфейс и реализация:

      • Интерфейс: cn.antcore.security.filter.AuthorizeFilter.
      • Реализация: cn.antcore.security.filter.AuthorizeFilterImpl.
    • Права доступа проверяются в методе UserDetails.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Spring Boot — это фреймворк для авторизации, который представляет собой более удобный для разработчиков инструмент распределённой проверки прав доступа и значительно повышает эффективность процесса верификации. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/antcore-spring-boot-starter-security.git
git@api.gitlife.ru:oschina-mirror/antcore-spring-boot-starter-security.git
oschina-mirror
antcore-spring-boot-starter-security
antcore-spring-boot-starter-security
master