Сеанс: На компьютерах, особенно в сетевых приложениях, это называется «управление сеансом». Объект Session хранит свойства и информацию о конфигурации, необходимые для определенного пользовательского сеанса. Таким образом, переменные, хранящиеся в объекте Session, не будут потеряны при переходе пользователя между веб-страницами приложения, а будут сохраняться на протяжении всего сеанса пользователя. Когда пользователь запрашивает веб-страницу из приложения, веб-сервер автоматически создает объект сеанса, если у пользователя еще нет сеанса. Когда сеанс истекает или прекращается, сервер завершает сеанс. Одним из наиболее распространенных применений объекта Session является хранение пользовательских настроек.
Управление сеансом
В этой статье в основном описываетсяSpring Security
ВнизSession
Следующие три вида управления,
-
Session
сверхурочное время -
Session
стратегия параллелизма - Кластерная среда
Session
иметь дело с
Время ожидания сеанса
-
application.yml
Настроить время ожидания
server:
port: 80
session:
timeout: 60
- настроитьMerryyouSecurityConfig
http.
......
.sessionManagement()
.invalidSessionUrl("/session/invalid")//session失效跳转的链接
.....
-
Cotroller
середина/session/invalid
@GetMapping("/session/invalid")
@ResponseStatus(code = HttpStatus.UNAUTHORIZED)
public Result<String> sessionInvalid() {
return ResultUtil.error(HttpStatus.UNAUTHORIZED.value(), "session失效");
}
Стратегия параллелизма сеансов
- настроитьMerryyouSecurityConfig
http.
......
.maximumSessions(1)//最大session并发数量1
.maxSessionsPreventsLogin(false)//false之后登录踢掉之前登录,true则不允许之后登录
.expiredSessionStrategy(new MerryyounExpiredSessionStrategy())//登录被踢掉时的自定义操作
.....
MerryyounExpiredSessionStrategy
@Slf4j
public class MerryyounExpiredSessionStrategy implements SessionInformationExpiredStrategy {
@Override
public void onExpiredSessionDetected(SessionInformationExpiredEvent eventØ) throws IOException, ServletException {
eventØ.getResponse().setContentType("application/json;charset=UTF-8");
eventØ.getResponse().getWriter().write("并发登录!");
}
}
когдаmaxSessionsPreventsLogin(true)
Вы можете обратиться к:Spring-Securityа такжеsecurity-oauth2
Обработка сеанса кластерной среды
- Добавить зависимость spring-session-data-redis
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
- Настройка стратегии хранения Spring-сессии
spring:
redis:
host: localhost
port: 6379
session:
store-type: redis
- тестовое задание
8080
а также8081
Порт запускает проект отдельно
java -jar spring-security.jar --server.port=8080
java -jar spring-security.jar --server.port=8081
Эффект следующий:
Для получения дополнительной информации о Spring Session, пожалуйста, обратитесь к:Программист ДД
загрузка кода
Скачать с моего гитхаба,GitHub.com/Longfeizhen…