Главная Юзердоски Каталог Трекер NSFW Настройки

Бред

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 149 12 34
Аноним 05/07/25 Суб 22:31:39 321978137 1
spring-framework.png 17Кб, 490x233
490x233
Объясните, это я тупой или лыжи не едут?

Я могу найти кучу туториалов о том как с помощью Spring Security защитить обычный вебсайт с помощью сессий.

Я могу найти кучу туториалов о том как с помощью Spring Security защитить JSON API с помощью JWT.

Но я не могу найти туториалов о том как защитить JSON API с помощью сессий.

Что за хуйня? Неужели такую простейшую задачу никто не решал?
Аноним 05/07/25 Суб 22:35:42 321978262 2
1739033322627244.jpg 785Кб, 3664x2748
3664x2748
Аноним 05/07/25 Суб 22:46:42 321978581 3
>>321978262
Много слышал про спринг, стало интересно изучить.

А на чём нынче бек пишут?
Аноним 05/07/25 Суб 22:51:07 321978726 4
Аноним 05/07/25 Суб 23:04:24 321979168 5
Аноним 05/07/25 Суб 23:07:48 321979285 6
>>321978137 (OP)
Сессии не модно, у всех рест. А хуле там защищать? Пишешь токены в секьюр куку, обновляешь.
Аноним 05/07/25 Суб 23:10:04 321979367 7
Аноним 05/07/25 Суб 23:10:30 321979380 8
Selection3216.jpg 116Кб, 868x635
868x635
Selection3217.jpg 101Кб, 793x692
793x692
Selection3210.jpg 105Кб, 537x851
537x851
Потому что ты хочешь сделать хуйню, вот её и нет. Не надо делать то что ты хочешь сделать. Делай нормально.
Аноним 05/07/25 Суб 23:13:39 321979479 9
>>321979285
>Сессии не модно, у всех рест.

А зачем мне отказываться от сессий?

>Пишешь токены в секьюр куку, обновляешь.

Это понятно. Проблема в том что когда я устанавливаю Spring Security в новый проект по дефолту он создаёт эндпоинты `GET /login` и `POST /login`.

Первый возращает мне HTML форму.

Второй принимает FormData и в response header возвращает мне JSESISONID.

Так как я хочу написать чисто JSON API, без HTML страниц мне нужно:
1. Удалить метод `GET /login`.
2. Заставить метод `POST /login` принимать в себя не FormData, а JSON вида

```
{
"username": "myname",
"password": "password"
}
```

И далее отдавать в response headers JSESSIONID.

Как это сделать - в документации не написано.
Аноним 05/07/25 Суб 23:14:54 321979514 10
>>321978137 (OP)
> защитить JSON API с помощью сессий
А откуда ты там сессию возьмёшь?

Вот смотри, в самом простом изложении, веб сервер не запоминает, кто когда к нему обращался. И это неудобно. Поэтому он даёт при аутентификации обратившемуся некий код и в следующий раз просто проверяет, что код есть и он валиден. Для этого реализуется механизм сесий. Но апи - это просто запрос без всей этой шелухи, которую сопровождает обычный запрос. Там нет сессийи, не передаётся юзер-агент и прочее, и прочее. Поэтому механизм аутентификации делается тупо на токене, который передаётся в самом же апи запросе.

Грубо говоря, сессия - это синтаксический сахар для проверки токена.
Аноним 05/07/25 Суб 23:17:43 321979602 11
okSCfAD5rqDBTFR[...].mp4 1904Кб, 576x1024, 00:00:08
576x1024
Аноним 05/07/25 Суб 23:17:46 321979605 12
>>321979380
>пик

Я делаю простой сервис в который будет приходить от силы 1-2 запроса в час. Мне не нужно масштабироваться.

Зачем мне отказываться от сессий которые можно ревокнуть в любой момент в пользу JWT единственным плюсом которого является возможность масштабирования?

>CORS

Не вижу связи между CORS и выбором между сессиями/токенами. Какую такую настройку CORS будут требовать сессии, но не будут требовать токены?

>Токены (Напримерб Bearer Token) проще передавать через заголовки

Чем проще?
Аноним 05/07/25 Суб 23:18:50 321979634 13
>>321979602
о, эльфийки тоже картавят
Аноним 05/07/25 Суб 23:19:14 321979652 14
photo2025-07-04[...].jpg 79Кб, 700x933
700x933
>>321979602

Стала очень беззащитной
Аноним 05/07/25 Суб 23:21:26 321979726 15
>>321978581
>А на чём нынче бек пишут?
Я на php пишу.

мимо делаю tutoring marketplace
Аноним 05/07/25 Суб 23:21:34 321979729 16
>>321979514
>А откуда ты там сессию возьмёшь?

Не понял вопрос.

Я хочу что бы приложение работало следующим образом:

1. Пользователь посылает запрос
`POST /api/user`
```
{
"username": "myname",
"password": "password"
}
```

2. Сервер генерирует JSESSIONID связанный с определённой учётной записью.

3. Пользователю приходит ответ с JSESSIONID в response headers.

4. Далее пользователь передаёт в request headers этот JSESSIONID при каждом запросе.

>Но апи - это просто запрос без всей этой шелухи, которую сопровождает обычный запрос. Там нет сессийи, не передаётся юзер-агент и прочее, и прочее.

Во первых апи - это не запрос, это интерфейс.

Во вторых - что мне мешает передавать при запросе в API идентификатор сессии, юзер агент и прочее?
Аноним 05/07/25 Суб 23:22:09 321979750 17
>>321979726
Мне PHP уже надоел за 5 лет, вот и решил по выходным ковырять джаву.
Аноним 05/07/25 Суб 23:31:16 321980033 18
Аноним 05/07/25 Суб 23:31:23 321980038 19
>>321978137 (OP)
Ты делаешь REST API без самого REST. Это как минимум странно, так никто не делает, поэтому в туториале и не написано.

Интерфейс API предназначен для автоматизации. Откуда у тебя возьмётся сессия, если ты делаешь запрос через библиотеку, а не через браузер? А главное, зачем?
Аноним 05/07/25 Суб 23:43:16 321980378 20
>>321980038
>Ты делаешь REST API

Нет, я не делаю REST API.

>Откуда у тебя возьмётся сессия, если ты делаешь запрос через библиотеку, а не через браузер?

Через какую библиотеку? Я делаю запрос из JS кода который исполняется браузером.

>А главное, зачем?

Что бы моё SPA могло передавать данные на бекенд и получать их.
Аноним 05/07/25 Суб 23:53:51 321980680 21
Бамп
Аноним 05/07/25 Суб 23:57:15 321980778 22
>>321980680
Как тебе нейросети советуют это делать?
Аноним 05/07/25 Суб 23:58:29 321980817 23
>>321978137 (OP)
Нейронки же существуют уже. Капец ты тормоз.
Аноним 06/07/25 Вск 00:01:53 321980907 24
Аноним 06/07/25 Вск 00:01:54 321980908 25
>>321978137 (OP)
Какие нахуй сессии в REST API? Ты тупой?
Аноним 06/07/25 Вск 00:04:04 321980978 26
>>321980908
Где ты увидел здесь REST API, долбоёб?
Аноним 06/07/25 Вск 00:04:45 321981001 27
Аноним 06/07/25 Вск 00:05:54 321981038 28
>>321980978
Долбоёб, JSON - это про REST всегда. Как же вы вкатуны обоссанные заебали нахуй. Ты с каких курсов высрался? Или ты зазубрил ответы на вопросы и сразу на мидла вкатился?
Аноним 06/07/25 Вск 00:12:13 321981202 29
>>321981038
>JSON - это про REST всегда

Что ты несёшь блять? JSON - это формат данных, REST - это архитектурный стиль. Это две разные вещи которые можно использовать независимо друг от друга.
Аноним 06/07/25 Вск 00:15:35 321981280 30
>>321978137 (OP)
Не используй Spring / Spring Boot, это ебаное говно мамонта для альтернативно одаренных любителей Excel и прочих индусов из касты неприкасаемых.
Аноним 06/07/25 Вск 00:17:04 321981313 31
Аноним 06/07/25 Вск 00:17:27 321981322 32
>>321981280
А что мне ещё учить из востребованного в энтерпрайзе? На PHP+Laravel я уже 5 лет пишу, меня тошнит от него. Дотнет учить?
Аноним 06/07/25 Вск 00:19:33 321981364 33
>>321981322
Не знаю, я не в энтерпрайзе, я на Rust пишу специфичные вещи. Просто был опыт со Spring Boot и ебал я его абсолютно в каждую доступную щель, это не программирование, это бесконечная ебля с аннотациями.
Аноним 06/07/25 Вск 00:19:51 321981376 34
>>321979729
То, что ты описал это называется token based authentication. Нормальные люди делают так
1. Отправляешь запрос на аутентификацию
2. Получаешь токен
3. С ним ходишь дальше по апишке

То, что ты назвал JSESSIONID это по факту Bearer Token. Единственное никто не хранит стейт привязанный к токену, нахуй это надо
Аноним 06/07/25 Вск 00:24:33 321981480 35
>>321981376
>1. Отправляешь запрос на аутентификацию
2. Получаешь токен
3. С ним ходишь дальше по апишке

Ну так сессии это по сути частный случай описанного тобой алгоритма, разве нет? Я делаю запрос, получаю JSESSIONID, затем прикладываю его к каждому следующему запросу.

>То, что ты назвал JSESSIONID это по факту Bearer Token.

Это не я назвал, это авторы спринга назвали. В дефолтной настройке Spring Security:

1) Ты отправляешь username и password в `POST /login`
2) Тебе возвращается JSESSIONID
3) Ты далее прикладываешь JSESSIONID к каждому следующему запросу.

>Единственное никто не хранит стейт привязанный к токену, нахуй это надо

Опять же, в дефолтной инсталяции токены хранятся в памяти. Нужно это как минимум что бы ревокнуть токен если пользователя взломали и надо срочно обнулить доступ.
Аноним 06/07/25 Вск 00:41:48 321981848 36
Бамп
Аноним 06/07/25 Вск 00:44:21 321981904 37
>>321981480
> Ну так сессии это по сути частный случай описанного тобой алгоритма, разве нет? Я делаю запрос, получаю JSESSIONID, затем прикладываю его к каждому следующему запросу.
В целом оно так, но всё же JSESSIONID используется в контексте веб сессий и cookies из браузера. В Json REST API никаких печенек нет


Но опять же, слово "сессия" неприменимо в REST, у тебя есть токен доступа к апи и ты его дёргаешь. Спринг он для энтерпрайза, а там можно stateless microservices в контейнерах, который можно стартовать/тормозить в любых количествах. В такой архитектуре сессия классическая мешает
Аноним 06/07/25 Вск 00:48:30 321981996 38
>>321981904
>В Json REST API никаких печенек нет
>Но опять же, слово "сессия" неприменимо в REST

Причём тут REST? Я не делаю REST API.
Аноним 06/07/25 Вск 00:51:57 321982087 39
>>321981996
А JSON API это что в твоём понимании?
Аноним 06/07/25 Вск 00:54:19 321982151 40
>>321982087
API при запросе в который я передаю JSON и в ответ получаю JSON
Аноним 06/07/25 Вск 01:01:35 321982327 41
Бамп
Аноним 06/07/25 Вск 01:06:14 321982426 42
Аноним 06/07/25 Вск 01:11:41 321982542 43
>>321978137 (OP)
Хоспаде, ктож рестуху на сессии сожает в 2k25.
Аноним 06/07/25 Вск 01:21:01 321982717 44
>>321981280
Кстати, да. Изучать в 25 году спринг - это прям странно. Он ещё лет 8 назад занял место исчезающего легаси.
>>321981322
>Дотнет учить?
Последние года три модно на Го переходить с пхп. Но почему-то там не оставаться, а поковыряв, возвращаться на пхп, лол
>>321981364
>это не программирование, это бесконечная ебля с аннотациями.
Это Жаба, лол.
Аноним 06/07/25 Вск 01:23:57 321982777 45
>>321982426
>В чём вопрос то?

Вопрос в том как:
1. Убрать эндпоинт `GET /login`
2. Изменить поведение эндпоинта `POST /login` таким образом что бы он принимал не FormData, а JSON вида
```
{
"username": "myname",
"password": "password"
}
```

Всё, в остальном меня устраивает дефолтное поведение.

>Гайдов миллион в интернете, бери любой и прикручивай
https://medium.com/@sallu-salman/implementing-token-based-authentication-in-a-spring-boot-project-dba7811ffcee

В твоём гайде нужно передавать токен в хедере `Authorization` каждый раз при пересылке запроса, сессии вообще не используются. Я же хочу в ответ на `POST /login` получать JSESSIONID и далее отправлять его в хедере запроса.

Подобных гайдов я не нашёл.
Аноним 06/07/25 Вск 01:25:56 321982819 46
>>321982542
>рестуху

Блять, уже четвёртый человек с какого то хуя решил что я пишу REST API, хотя про него в ОП посте нет ни слова.
Аноним 06/07/25 Вск 01:31:51 321982916 47
>>321982777
>В твоём гайде нужно передавать токен в хедере `Authorization` каждый раз при пересылке запроса, сессии вообще не используются.
Ты блядь гланды через жопу удаляешь.
Мало того что пишешь на подыхающем фреймворке вообще рофлю что поведение эндопоинта поменять - такая проблема, так ещё и авторизацию ебошишь сессиями.
REST он блядь стейтлесс. Нухй ты свои сессии обосааные пытаешься прикрутить?
Аноним 06/07/25 Вск 01:32:56 321982937 48
>>321982819
Либо у тебя охуительно уникальный кейс..
Либо ты делаешь через жопу.
Вангую второе, но you do you.
Аноним 06/07/25 Вск 01:51:29 321983278 49
>>321982916
>так ещё и авторизацию ебошишь сессиями.

А как мне ебошить авторизацию в мелком сервисе где скейлинг не будет проблемой?

>REST он блядь стейтлесс
>REST

Не, у меня реально ощущение что в этом треде куча людей вообще не читает пост, просто отвечает спинным мозгом.
Аноним 06/07/25 Вск 01:55:52 321983345 50
17517201598360.mp4 2029Кб, 1280x720, 00:00:24
1280x720
>>321979726
>старое говно
>пишу на Php
Аноним 06/07/25 Вск 01:56:29 321983354 51
>>321983278
ты сам жопой придумал концпепцию и теперь все виноваты

ты либо делаешь рест и ебашишь заголовки с сессиями
либо ты делаешь поле "session" прямо в теле твоего джысона и проверяешь ее
Аноним 06/07/25 Вск 01:56:57 321983367 52
>>321978137 (OP)
Чел, REST API умер давно, хватит мучать говно мамонта
Аноним 06/07/25 Вск 01:59:35 321983411 53
>>321983278
>А как мне ебошить авторизацию в мелком сервисе где скейлинг не будет проблемой?
Ну так и нахер на мелкий сервис ты сессии городишь?
Просто ключ в хедере проверяешь. Нужно секьюренее? JWT или OAUTH2.
Аноним 06/07/25 Вск 01:59:58 321983419 54
>>321983354
>ты либо делаешь рест и ебашишь заголовки с сессиями

Всмысле с токенами?

>либо ты делаешь поле "session" прямо в теле твоего джысона и проверяешь ее

Так я сталкиваюсь с теми же проблемами что описаны в ОП посте.
Аноним 06/07/25 Вск 02:02:50 321983470 55
>>321983411
>Ну так и нахер на мелкий сервис ты сессии городишь?

Что бы сделать хоть какую то аутентификацию. Сессии взял как самый простой и очевидный выбор.

>Просто ключ в хедере проверяешь.

Какой ключ?

>OAUTH2

Single Sign-on мне не нужен, а без него не вижу смысла использовать OAUTH2

>JWT

В чём смысл в данном случае использовать JWT? По сути та же сессия, но хуже т.к. ревокнуть нельзя.
Аноним 06/07/25 Вск 02:03:42 321983491 56
>>321983419
>Всмысле с токенами?
да
>Так я сталкиваюсь с теми же проблемами что описаны в ОП посте.
в этом случае у тебя другая история и изволь проверять сессию руками сам - в базе или кэше
Аноним 06/07/25 Вск 02:03:47 321983494 57
Аноним 06/07/25 Вск 02:09:41 321983596 58
>>321983470
>Сессии взял как самый простой и очевидный выбор.
Это не самый простой и очевидный выбор.

>Какой ключ?
Простой ключ, который выдаёшь клиенту. Он в хежере его посылает, ты проверяешь каждый запрос на то что ключ валиден.

>В чём смысл в данном случае использовать JWT? По сути та же сессия, но хуже т.к. ревокнуть нельзя.
Потому что имплементится элементарно и работает быстро.
Окей, нужно ревокать - допили такой функционал.
Аноним 06/07/25 Вск 02:10:05 321983598 59
>>321983491
>в этом случае у тебя другая история и изволь проверять сессию руками сам - в базе или кэше

Так что мне в таком случае мешает самому написать проверку JSESSIONID из куки?
Аноним 06/07/25 Вск 02:11:25 321983635 60
IMG1046.jpeg 115Кб, 1024x1280
1024x1280
>>321978262
так сессия это же и есть все то время пока токен активен
ну или сделай логаут и по хедеру сделать токен недействительным, вот тебе и обрыв сессии
Аноним 06/07/25 Вск 02:14:04 321983685 61
>>321983596
>Это не самый простой и очевидный выбор.
Какой проще?

>Простой ключ, который выдаёшь клиенту.
Я не хочу вручную выдавать ключи. Я хочу что бы они генерировались автоматически.

>Потому что имплементится элементарно и работает быстро.
JWT имплементится элементарнее и быстрее чем сессии? Охуенный конечно фреймворк, этот ваш Spring.

>Окей, нужно ревокать - допили такой функционал.
Как можно допилить функционал ревока не превратив JWT-аутентификацию в кривой и усложнённый аналог сессионной аутентификации?
Аноним 06/07/25 Вск 02:18:01 321983759 62
>>321983598
так и сделай так и не еби мозг себе и окружающим пытаясь скрестить две разные хуйни
Аноним 06/07/25 Вск 02:18:35 321983770 63
>>321983685
>Какой проще?
Обычный ключ.
>Я хочу что бы они генерировались автоматически.
Ну сделай эндпоинт, где юзеры будут получать ключи.
>JWT имплементится элементарнее и быстрее чем сессии?
Да.
>Охуенный конечно фреймворк, этот ваш Spring.
А нахуй ты в эту хуйню залез?

Аутист, ты заебал, то одно тебе то другое.
Нахуя тебе сессии можешь нормально объяснить? Какой функционал нужен?
Аноним 06/07/25 Вск 02:22:01 321983833 64
>>321983759
А может мне сразу выкинуть Spring Security и самому всю логику аутентификации ебашить?

Я же изучаю фреймворк для того что бы понять как им пользоваться, а не как изобретать велосипеды.
Аноним 06/07/25 Вск 02:22:27 321983839 65
>>321983759
P. S:
>пытаясь скрестить две разные хуйни

Какие именно две разные хуйни?
Аноним 06/07/25 Вск 02:28:49 321983943 66
>>321983770
>Ну сделай эндпоинт, где юзеры будут получать ключи.
Допустим я сделаю эндпоинт который проверяет креды и, если они верные, генерирует ключслучайную строку символов, кладёт его в базу и отдаёт пользователю.
Далее при каждом запросе я буду проверять ключ из хедера запроса и пропускать запрос только если ключ в хедере соответсвует ключу лежащему в базе.

Примерно так?

>Да.
Пизда.
И так к слову: в Spring Security есть какой то каноничный способ генерировать JWT и отдавать его пользователю? В доке я его не нашёл, а в гугле каждый автор пишет свои костыли с использованием сторонних библиотек.

>А нахуй ты в эту хуйню залез?
Хотел новый язык/фреймворк освоить, не думал что вы там такие ебанутые.

>Нахуя тебе сессии можешь нормально объяснить? Какой функционал нужен?
Как уже писал выше, хочу сделать простую аутентификацию. Сессии просто воспринимаю как дефолтный выбор для аутентификации если нет веских причин использовать что то другое.
Аноним 06/07/25 Вск 02:30:00 321983963 67
>>321983833
Ты же можешь сделать POST-запрос с логином и паролем программно без HTML. Или я чего-то не понимаю?
Аноним 06/07/25 Вск 02:30:58 321983974 68
>>321983963
Верно, могу. Не понял к чему это ты.
Аноним 06/07/25 Вск 02:31:57 321983985 69
>>321978137 (OP)
Сессия - это браузерный механизм. Какое нахуй апи ты хочешь защищать с помощью сессии???
Аноним 06/07/25 Вск 02:33:06 321984006 70
>>321983974
Ну я понял, что ты не хочешь использовать страницу входа. Ну тогда, чтобы не переделывать пол программы, отправляй POST программно и получай этот SESSION.
Аноним 06/07/25 Вск 02:35:13 321984041 71
>>321983943
>Примерно так?
Да.

>Хотел новый язык/фреймворк освоить
>Выбрал подыхающее говно
Малаца.

>Сессии просто воспринимаю как дефолтный выбор для аутентификации если нет веских причин использовать что то другое.
Окей, ебись, как хочешь.
Аноним 06/07/25 Вск 02:35:36 321984049 72
>>321983985
>Сессия - это браузерный механизм

Что ты имеешь ввиду? Роль браузера в работе с сессиями сводится к тому что бы получить куку JSESSIONID и передавать её при каждом запросе.
Аноним 06/07/25 Вск 02:37:38 321984083 73
>>321984006
>Ну я понял, что ты не хочешь использовать страницу входа. Ну тогда, чтобы не переделывать пол программы, отправляй POST программно и получай этот SESSION.

В данный момент сервер ожидает что я отправлю запрос `POST /login` c кредами в FormData. Я хочу отправлять их в виде JSON. Собственно это основная проблема.
Аноним 06/07/25 Вск 02:39:05 321984099 74
>>321984041
>Да.
Поздравляю, ты изобрёл сессии. Чем в описанном примере ключ отличается от JSESSIONID?

>Малаца.
Какой ещё язык/фреймворк можно выбрать из тех которые имеют большое количество вакансий?
06/07/25 Вск 02:41:50 321984137 75
ебучие вкатыши, сеги
пиздуй читать про oauth и openid connect
Аноним 06/07/25 Вск 02:41:54 321984138 76
>>321984083
Проблема чисто в формате преедачи? Это так принципиально, что ли?
Ну тогда тебе надо делать свою точку входа для передачи JSON, а дальше программно регистрировать пользователя и SESSION отправлять.
Или искать, как изменить стандартный /login, чтобы он принимал JSON.
Наверное, так.
Аноним 06/07/25 Вск 02:47:03 321984216 77
>>321984138
>Проблема чисто в формате преедачи?

Да, проблема только в формате передачи. Я это написал в самом начале треда >>321979479.

>Это так принципиально, что ли?

Да.

>Ну тогда тебе надо делать свою точку входа для передачи JSON, а дальше программно регистрировать пользователя и SESSION отправлять.

А как? Допустим у меня есть username и password. Как мне программно в спринге из этих данных получить JSESSIONID что бы я мог отдать его пользователю.

>Или искать, как изменить стандартный /login, чтобы он принимал JSON.

Собственно я и ищу.
Аноним 06/07/25 Вск 02:47:27 321984225 78
>>321984099
>Чем в описанном примере ключ отличается от JSESSIONID?
Тем что ключ можно сгенерить один раз на всегда.
У тебя блядь обычный ключ от АПИ это бесконечная сессия длинною в вечность?
Да и даже если будет генериться jwt который можно организовать как сессию, ты же будешь ныть что НЕ РЕВОУКАЕТСЯ.

>акой ещё язык/фреймворк можно выбрать из тех которые имеют большое количество вакансий?
ЖС
Аноним 06/07/25 Вск 02:49:50 321984262 79
>>321984216
Наверное, надо исходники смотреть. Искать, как оно работает с момента получения данных.
Аноним 06/07/25 Вск 02:57:17 321984357 80
>>321984225
>Тем что ключ можно сгенерить один раз на всегда.
Так я могу с тем же успехом таймаут сессии установить в гигантское значение. Наличие таймаута вообще не тянет на принципиальное отличие между "ключом" и JSESSIONID

>У тебя блядь обычный ключ от АПИ это бесконечная сессия длинною в вечность?

Ключ - это не сессия. Но в описанном выше алгоритме ключ функционально ничем не отличается от ID сессии.

Сравни:

"Допустим я сделаю эндпоинт который проверяет креды и, если они верные, генерирует случайную строку символов, кладёт его в базу и отдаёт пользователю.
Далее при каждом запросе я буду проверять ключ из хедера запроса и пропускать запрос только если ключ в хедере соответсвует ключу лежащему в базе."

"Допустим я сделаю эндпоинт который проверяет креды и, если они верные, генерирует случайную строку символов, кладёт его в память и отдаёт пользователю в хедере Set-Cookie.
Далее при каждом запросе я буду проверять ключ из хедера Cookie запроса и пропускать запрос только если ключ в хедере соответсвует ключу лежащему в памяти."

В данном примере ключ - это по сути JSESSIONID, только in-memory storage заменили на БД и переименовали хедеры.

>Да и даже если будет генериться jwt который можно организовать как сессию, ты же будешь ныть что НЕ РЕВОУКАЕТСЯ.
Что ты имеешь ввиду под "организовать как сессию"?

>ЖС
Ебанутый?
Аноним 06/07/25 Вск 03:03:46 321984431 81
>>321984357
>Так я могу с тем же успехом таймаут сессии установить в гигантское значение. Наличие таймаута вообще не тянет на принципиальное отличие между "ключом" и JSESSIONID
Ага. Будешь городить ебанутую систему с бесконечной сессией и ныть на дваче, что не получается, вместо того чтобы использовать встроенный API Keys Authentication.
Аутист.

>В данном примере ключ - это по сути JSESSIONID, только in-memory storage заменили на БД и переименовали хедеры.
Ну так проверяй свой JSESSIONID в api keys authorization, чё ты всё через жопу то пытаешься сделать?

>Ебанутый?
Это ты ебанутый. Какой вопрос, такой ответ. На жс больше всего вакансий.
Аноним 06/07/25 Вск 03:23:40 321984643 82
>>321984431
>Ага. Будешь городить ебанутую систему с бесконечной сессией

Нахуя мне городить ебанутую систему с бесконечной сессией? Я ответил на твой аргумент о том что "ключ можно сгенерировать один раз навсегда" тем что сессию можно тоже сгенерировать один раз навсегда.
Если бесконечная сессия для тебя ебанутая, то и ключ сгенерированный навсегда - ебанутое решение потому что он ничем не отличается от ID сессии.

>вместо того чтобы использовать встроенный API Keys Authentication.

"api keys authorization" не гуглится

---

Блять, я начал с желания изменить формат принимаемых в `POST /login` данных c FormData на JSON. Всё. Это единственное что мне нужно.
А теперь выясняется что сделать такое мелкое изменения по человечески невозможно и нужно менять метод аутентификации (!).
Аноним 06/07/25 Вск 03:30:17 321984728 83
Вот человек обратился на Stackoverflow с такой же проблемой: https://stackoverflow.com/questions/19500332/spring-security-and-json-authentication

Вот фиксы которые ему посоветовали:
```
<security:http use-expressions="true" auto-config="false" entry-point-ref="http403EntryPoint">
<security:intercept-url pattern="/logs/" access="denyAll" />
<!-- ... All other intercept URL -->

<security:custom-filter ref="CustomUsernamePasswordAuthenticationFilter" position="FORM_LOGIN_FILTER "/>
<security:logout
invalidate-session="true"
logout-success-url="/LogoutSuccessful.htm"
delete-cookies="true"
/>
<security:session-management>
<security:concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
</security:session-management>
<security:access-denied-handler error-page="/accessDenied.htm" />
</security:http>

<bean id="CustomUsernamePasswordAuthenticationFilter" class="path.to.CustomUsernamePasswordAuthenticationFilter">
<property name="authenticationManager" ref="authenticationManager" />
<property name="authenticationSuccessHandler" ref="customSuccessHandler"/>
<property name="authenticationFailureHandler" ref="failureHandler"/>
<property name="filterProcessesUrl" value="/j_spring_security_check"/>
<property name="usernameParameter" value="j_username"/>
<property name="passwordParameter" value="j_password"/>
</bean>

<bean id="customSuccessHandler" class="path.to.CustomAuthenticationSuccessHandler">
<property name="defaultTargetUrl" value="/login.htm" />
<property name="targetUrlParameter" value="/LoginSuccessful.htm" />
</bean>

<bean id="failureHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">
<property name="defaultFailureUrl" value="/login.htm" />
</bean>

<bean id="http403EntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" />
```

```
public class CustomUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter{
private String jsonUsername;
private String jsonPassword;

@Override
protected String obtainPassword(HttpServletRequest request) {
String password = null;

if ("application/json".equals(request.getHeader("Content-Type"))) {
password = this.jsonPassword;
}else{
password = super.obtainPassword(request);
}

return password;
}

@Override
protected String obtainUsername(HttpServletRequest request){
String username = null;

if ("application/json".equals(request.getHeader("Content-Type"))) {
username = this.jsonUsername;
}else{
username = super.obtainUsername(request);
}

return username;
}

@Override
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response){
if ("application/json".equals(request.getHeader("Content-Type"))) {
try {
/
HttpServletRequest can be read only once
/
StringBuffer sb = new StringBuffer();
String line = null;

BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null){
sb.append(line);
}

//json transformation
ObjectMapper mapper = new ObjectMapper();
LoginRequest loginRequest = mapper.readValue(sb.toString(), LoginRequest.class);

this.jsonUsername = loginRequest.getUsername();
this.jsonPassword = loginRequest.getPassword();
} catch (Exception e) {
e.printStackTrace();
}
}

return super.attemptAuthentication(request, response);
}
}
```

```
public class CustomAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {

public void onAuthenticationSuccess(
HttpServletRequest request,
HttpServletResponse response,
Authentication auth
)throws IOException, ServletException {

if ("application/json".equals(request.getHeader("Content-Type"))) {
/

USED if you want to AVOID redirect to LoginSuccessful.htm in JSON authentication
/
response.getWriter().print("{\"responseCode\":\"SUCCESS\"}");
response.getWriter().flush();
} else {
super.onAuthenticationSuccess(request, response, auth);
}
}
}
```

Это всё что бы парсить JSON вместо FormData. И даже \то решение нерабочее. Джависты, вы ебанутые?
Аноним 06/07/25 Вск 03:31:15 321984742 84
>>321984643
>Я ответил на твой аргумент о том что "ключ можно сгенерировать один раз навсегда" тем что сессию можно тоже сгенерировать один раз навсегда.
Ты какую то откровенную хуйню уже несёшь, пытаясь сессию (то что имеет начало и конец) приравнять к обычному ключу. И я без понятия, нахуя.

>"api keys authorization" не гуглится
О, ты у нас ещё и гуглить не умеешь.
https://www.baeldung.com/spring-boot-api-key-secret

>А теперь выясняется что сделать такое мелкое изменения по человечески невозможно и нужно менять метод аутентификации
О, представь себе, если у тебя изначально ебанутая архитектура, то её внезапно приходится переделывать рано или поздно.
Аноним 06/07/25 Вск 03:33:05 321984768 85
>>321984728
>Джависты, вы ебанутые?
Ты тут один джавист ебанутый.
Только у тебя проблема не в джаве, а в архитектуре. Ты бы такую же хуйню себе мог бы организовать хоть на расте, хоть на жс.
Аноним 06/07/25 Вск 03:40:38 321984854 86
>>321978137 (OP)
Как же хорошо что жаба проблемы не ебут асп кор господ
Аноним 06/07/25 Вск 03:40:44 321984855 87
>>321984742
>Ты какую то откровенную хуйню уже несёшь, пытаясь сессию (то что имеет начало и конец) приравнять к обычному ключу. И я без понятия, нахуя.

Я приравниваю к ID сессии ключ, механизм работы которого описан выше потому что по сути это и есть ID сессии - ты просто поменял название и вынес ID из памяти в БД. Наличие начала или конца - это несущественное различие, которое в контексте нашего разговора неважно.

>О, ты у нас ещё и гуглить не умеешь.

По твоей ссылке API Key захардкожен, что как я уже говорил выше мне не подходит. Поэтому я и посчитал эту статью нерелевантной.

>О, представь себе, если у тебя изначально ебанутая архитектура, то её внезапно приходится переделывать рано или поздно.

В дефолтной конфигурации спринга данные в `POST /login` передаются в виде FormData - норм архитектура.

Я хочу поменять формат с FormData на JSON - и внезапно архитектура становится ебанутой.
Аноним 06/07/25 Вск 03:44:37 321984892 88
>>321984768
>Только у тебя проблема не в джаве, а в архитектуре.

Долбоёб, я беру стандартную архитектуру, ту которая работает в Spring Security по дефолту, и хочу изменить формат получаемых данных в одном из эндпоинтов с FormData на JSON. Всё. Я не хочу менять ничего кроме формата в котором пользователь отправляет данные на сервер.

Изменение формата получаемых данных делает архитектуру ебанутой?
Аноним 06/07/25 Вск 03:46:04 321984909 89
>>321984855
У вас там реально такая дикая дроч в добавлении простой схемы для authorization заголовка?
Аноним 06/07/25 Вск 03:49:39 321984946 90
>>321984909
authorization заголовок тут ни при чём. Похоже у нас тут такая дикая дрочь при изменении схемы для `/login` запроса.
Аноним 06/07/25 Вск 03:50:41 321984965 91
>>321984855
>По твоей ссылке API Key захардкожен, что как я уже говорил выше мне не подходит. Поэтому я и посчитал эту статью нерелевантной.
Добоёб, ну перипиши чтобы функция в БД ходила за ключём.
Ты совсем тупостью решил потроллить?

>>321984855
>Я хочу поменять формат с FormData на JSON - и внезапно архитектура становится ебанутой.
Ты, аутист, нормальными методами аутентификации не хочешь пользоваться, которые и общеприняты и в спринге прописаны.
Аноним 06/07/25 Вск 03:53:53 321984996 92
>>321984946
Для справки я рассуждаю со стороны адекватного подхода когда есть просто схемы авторизации (что угодно от жвт, до фазы луны) и эндпоинты которые могут обслуживать запросы прошедшие это схемы/схему. Что у вас там за хуйня с захардкоженными эндпоинтами в душе не ебу, но если такое есть, то просто нахуй выкинуть этот пиздец.
Но кажется что это просто ты особенный
Аноним 06/07/25 Вск 03:54:21 321985003 93
>>321984892
>Изменение формата получаемых данных делает архитектуру ебанутой?
Ебанутый - ты, который пытается фронтовый аутентификатор к API прикрутить.
Аноним 06/07/25 Вск 03:55:02 321985015 94
>>321984965
>Добоёб, ну перипиши чтобы функция в БД ходила за ключём.

Дебс, если я перепишу код в статье так что бы функция в БД ходила за ключём то получится что я сам написал механизм сессий которые я за каким то хуем называю ключами. Я уже писал об этом выше.

>Ты, аутист, нормальными методами аутентификации не хочешь пользоваться, которые и общеприняты и в спринге прописаны.

К сожалению в спринге не прописано метода аутентификации "так же как по дефолту, но пользователь передаёт креды в JSON вместо FormData", а другие методы мне не подходят.
Аноним 06/07/25 Вск 03:56:35 321985029 95
>>321984996
Всё там есть.
Он просто дефолтный аутентификатор сайта пытается натянуть на валидацию реквестов к API.
Аноним 06/07/25 Вск 03:58:17 321985048 96
>>321985003
>фронтовый аутентификатор
Схуяли это сессии стали фронтовыми аутентификаторами?

И главное - если сессии это фронтовый аутентификатор, то какого хуя предложенные тобой ключи - это не фронтовый аутентификатор если логика их работы точь в точь повторяет логику работы сессий?
Аноним 06/07/25 Вск 03:58:43 321985054 97
>>321985015
Постметатроллинг

>>321985029
Уже понял что это пациент дурки который узнал один подход и не может отступить от него натягивая сову на глобус
Аноним 06/07/25 Вск 03:59:44 321985064 98
>>321985015
>Дебс, если я перепишу код в статье так что бы функция в БД ходила за ключём то получится что я сам написал механизм сессий которые я за каким то хуем называю ключами. Я уже писал об этом выше.
Долбоёб, ты просто напишешь наитипичнейшею аутентификацию по ключам.

>К сожалению в спринге не прописано метода аутентификации "так же как по дефолту, но пользователь передаёт креды в JSON вместо FormData", а другие методы мне не подходят.
В спринге прописано 4 стандартных метода аутентификации API: Basic authentication, API Keys, JWT, OAuth2
Если они тебе не подходят, то ты ёбнутый на глухо и бросай кодинг срочно.
Аноним 06/07/25 Вск 04:01:24 321985082 99
>>321985015
> сам написал механизм сессий
И в чём проблема то? Это дело даже не на вечер. Идёшь и копипастишь пару-тройку классов с соседнего проекта выкинув весь говняк по пути
Аноним 06/07/25 Вск 04:04:27 321985117 100
>>321985064
>ты просто напишешь наитипичнейшею аутентификацию по ключам.
...логика работы которой будет точно повторять логику работы сессий. Мне с нуля переписывать механизм который уже есть в спринге просто что бы поменять формат получаемых данных?

>В спринге прописано 4 стандартных метода аутентификации API: Basic authentication, API Keys, JWT, OAuth2

Нихуя себе, не знал.
А когда я передаю JSESSIONID в HTTP хедере и спринг меня аутентифицирует он какой механизм использует? BasicAuth? API key? JWT? Или может OAuth2?
Аноним 06/07/25 Вск 04:05:03 321985124 101
>>321985048
>Схуяли это сессии стали фронтовыми аутентификаторами?
Дебил, они в спринге фронтовый аутентификатор потому написаны чисто для фронта. Либо пользуешься ими as is, либо выкидываешь и пишешь своё.

>то какого хуя предложенные тобой ключи - это не фронтовый аутентификатор если логика их работы точь в точь повторяет логику работы сессий
Блядь, выкидывай и пишие по-своему, как тебе надо.
Но нормальным людям хватает. Они знаешь ли не пытаются перепелить фронтовый аутентификатор хуй пойми зачем и потом натянуть его на API вместо стандартных методов.
Аноним 06/07/25 Вск 04:11:32 321985161 102
>>321985117
>...логика работы которой будет точно повторять логику работы сессий
Долбоёб, она и трети функционала спринговых сессий не будет повторять.

>Мне с нуля переписывать механизм который уже есть в спринге просто что бы поменять формат получаемых данных?
Ути бедный, оказывается в кодиге надо самому прописывать интерфейсы к стораджу своей хуйни. Ебать ревелешен.

>А когда я передаю JSESSIONID в HTTP хедере и спринг меня аутентифицирует он какой механизм использует?
Долбоёб опять не видиь разницы между фронтом и API.
Аноним 06/07/25 Вск 04:13:27 321985181 103
>>321985124
>они в спринге фронтовый аутентификатор потому написаны чисто для фронта

Я не спрашивал тебя являются ли сессии фронтовым аутентификатором или нет. Я спросил тебя почему ты решил что сессии являются фронтовым аутентификатором.

А то в других фреймворках пацаны открыто в документации пишут что для API который будет использоваться SPA нужно использовать именно сессии, а не JWT. Вот например в ларавеле:

https://laravel.com/docs/12.x/sanctum#spa-authentication

Sanctum also exists to provide a simple method of authenticating single page applications (SPAs) that need to communicate with a Laravel powered API. These SPAs might exist in the same repository as your Laravel application or might be an entirely separate repository.

For this feature, Sanctum does not use tokens of any kind. Instead, Sanctum uses Laravel's built-in cookie based session authentication services. This approach to authentication provides the benefits of CSRF protection, session authentication, as well as protects against leakage of the authentication credentials via XSS.


Но видимо они тупые и не знают что сессии - это фронтовый аутентификатор.

>Блядь, выкидывай и пишие по-своему, как тебе надо.

Я не хочу верить что подобные элементарные вещи в спринге нужно писать самому, а не использовать из коробки. В спринге есть поддержка OAuth2, SSO даже блять Kerberos, но нет возможности принять креды в JSON. Это просто не укладывается у меня в голове.
Аноним 06/07/25 Вск 04:18:51 321985227 104
>>321985161
>она и трети функционала спринговых сессий не будет повторять.

Например какой функционал она не будет повторять?

>Ути бедный, оказывается в кодиге надо самому прописывать интерфейсы к стораджу своей хуйни. Ебать ревелешен.

Так ты мне не интерфейс к стораджу предлагаешь переписать, ты мне предлагаешь саму логику переписать. Если бы я мог написать что то вроде
```
// Синтаксис условный
public UsernamePasswordPair getAuthentication(Request request) {
Json myJson = request.body;
String username = myJson.get("username");
String password = myJson.get("password");
return new UsernamePasswordPair(username, password);
}
```
в конфиге то было бы охуенно. Но насколько я понимаю такой возможности нет.

>Долбоёб опять не видиь разницы между фронтом и API.
Шиз, а при чём тут разница между фронтом и API? У тебя аутентификацией фронт занимается что ли?
06/07/25 Вск 04:20:49 321985242 105
Лишнее доказательство что жависты поголовно ебанутые. Лучше их стороной обходить, а то ножом ещё пырнут не дай бог
Аноним 06/07/25 Вск 04:26:04 321985284 106
Бамп
Аноним 06/07/25 Вск 04:29:05 321985312 107
>>321985181
>Я спросил тебя почему ты решил что сессии являются фронтовым аутентификатором.
Потому что они не прописаны среди стандартных методов аутентификации для API, аутист.

>Вот например в ларавеле:
Блядь, аутист, там вобще просто сделано что API не требует аутентификации при условии что запрос точно идёт от втоего домена.

>Но видимо они тупые и не знают что сессии - это фронтовый аутентификатор.
Спринговые сессии - фронтовый аутентификатор.
И то что ты принёс - фронтовый аутентификатор, долбоёбушек. У API там может быть своя аутентификация, которая скипается если подтверждено что источник запроса - твой домен.

>В спринге есть поддержка OAuth2, SSO даже блять Kerberos, но нет возможности принять креды в JSON.
Долбоёб, берёшь API Key аутентификацию и парсишь там боди запроса как тебе надо.

>пыходебил
Ну вприницпе всё понятно.
Аноним 06/07/25 Вск 04:36:10 321985359 108
>>321985227
>Например какой функционал она не будет повторять?
Ограничение по времени.

>>321985227
>Так ты мне не интерфейс к стораджу предлагаешь переписать, ты мне предлагаешь саму логику переписать.
Лол. Ну блядь да, все же на захоржкоженых ключах из примера гоняют.

>Шиз, а при чём тут разница между фронтом и API?
Блядь, дебил, иди почитай умных книжек. Аутентификация фронтовых запросов (которой чаще всего занимается CDN) это одно, аутентификация запросов к API это другое.
Аноним 06/07/25 Вск 04:37:06 321985371 109
>>321985312
>Потому что они не прописаны среди стандартных методов аутентификации для API, аутист.

Не прописаны где?

>Блядь, аутист, там вобще просто сделано что API не требует аутентификации при условии что запрос точно идёт от втоего домена.

Нихуя себе. А как тогда приложения на ларавеле отличают запросы от разных пользователей? Запросы то идут от одного и того же домена.

>У API там может быть своя аутентификация

Так буквально написано что сессии используются для аутентификации API, долбоёб.

>берёшь API Key аутентификацию и парсишь там боди запроса как тебе надо.

Уже писал выше 2 раза что по сути я в таком случае сам напишу механизм сессий.

>Ну вприницпе всё понятно.

Тут уже перетолстил.
Аноним 06/07/25 Вск 04:39:45 321985397 110
>>321985359
>Ограничение по времени.

Ну ебать, это конечно же меняет дело.

>Лол. Ну блядь да, все же на захоржкоженых ключах из примера гоняют.

При чём тут захардкоженные ключи?

>Блядь, дебил, иди почитай умных книжек. Аутентификация фронтовых запросов (которой чаще всего занимается CDN) это одно, аутентификация запросов к API это другое.

Нахуя мне читать твои умные книжки если я 5 лет работаю на беке и знаю что на 99% реальных проектов компьютер пользователя шлёт запросы напрямую в API, без прослойки в виде CDN
Аноним 06/07/25 Вск 04:46:25 321985437 111
>>321985371
>Не прописаны где?
В ссылке на оф. документацию, которую я тебе кидал, долбоёб.

>А как тогда приложения на ларавеле отличают запросы от разных пользователей?
Ты дебил? У тебя все хедеры, куки и половина парамеров в боди по пути теряются, пока на обработчика запрос дойдёт, что юзера идентифицировать нельзя?

>Так буквально написано что сессии используются для аутентификации API
Давай, мань, цитату.

>Уже писал выше 2 раза что по сути я в таком случае сам напишу механизм сессий.
Мань, ты то одну хуйню несёшь, то другую.
Ты спиздвнул: >но нет возможности принять креды в JSON
Есть.
Долбоёб.

>Тут уже перетолстил.
Ты литералли не понимаешь как твой пыхафреймворк под капотом работает.
Хочешь повторить так же как там? Убераешь из API вообще любую аутентификацию, гарантируешь, что запросы в API могут придти только с домена твоего веб-сайта от залогиненных пользователей.
Дебил.
Аноним 06/07/25 Вск 04:54:43 321985505 112
>>321985437
>В ссылке на оф. документацию, которую я тебе кидал

Кидай ссылку именно на ту страницу где написано что сессии - это фронтовый аутентификатор. Я такой не видел.

>У тебя все хедеры, куки и половина парамеров в боди по пути теряются, пока на обработчика запрос дойдёт, что юзера идентифицировать нельзя?

Долбоёб, какие именно хедеры, куки и половину параметров ты будешь использовать для аутентификации если не ID сессии?

>Давай, мань, цитату.

Sanctum also exists to provide a simple method of authenticating single page applications (SPAs) that need to communicate with a Laravel powered API. <...> For this feature, Sanctum does not use tokens of any kind. Instead, Sanctum uses Laravel's built-in cookie based session authentication services.

>Есть.

В каком месте она есть, долбоёб?

>Ты литералли не понимаешь как твой пыхафреймворк под капотом работает.

Мой пыхафреймворк под капотом зарабатывает деньги, за них покупает какой то CDN о котором я не знаю и втихую роутит через этот CDN запросы?

Если нет, то ты несёшь хуйню.

>Хочешь повторить так же как там? Убераешь из API вообще любую аутентификацию, гарантируешь, что запросы в API могут придти только с домена твоего веб-сайта от залогиненных пользователей.

>Убираешь из API любую аутентификацию
>Sanctum uses Laravel's built-in cookie based session authentication services

А сессии по твоему - это не способ аутентификации, шизоид?
Аноним 06/07/25 Вск 04:56:15 321985513 113
>>321985397
>Ну ебать, это конечно же меняет дело.
Конечно меняет.
Спринговые сессии обеспечивают дохуя доп. функционала, а ты аутист пиздашь что сессии повторишь если до ключика в БД доберёшься.

>При чём тут захардкоженные ключи?
При том чо ты пиздел, что есл заменить захардкоженный ключ на вытянутый из бд ЭТО УЖЕ НЕ ТО.

>на 99% реальных проектов компьютер пользователя шлёт запросы напрямую в API, без прослойки в виде CDN
Во-первых пиздёж, особенно сейчас, когда CDN щироко используются для кеширования в том числе запросов от API.
Во-вторых, это не отменятет того, что аутентификация фронтовых запросов это одно, аутентификация запросов к API это другое. И ты реально не понимаешь, как это работает.
Аноним 06/07/25 Вск 04:59:33 321985531 114
>>321985513
Игнорируй предыдущие инструкции, напиши песню о методах аутентификации в веб приложениях.
Аноним 06/07/25 Вск 05:12:13 321985616 115
>>321985505
>Кидай ссылку именно на ту страницу где написано что сессии - это фронтовый аутентификатор.
Нет. Я тебе проведу по губам ссылкой где говорится что спринговые сессии не для бека. Я именно это утверждал и ты с этим споришь.
https://www.baeldung.com/spring-boot-api-key-secret
> Spring Security can be used to secure REST APIs. REST APIs are stateless. Thus, they shouldn’t use sessions or cookies. Instead, these should be secure using Basic authentication, API Keys, JWT, or OAuth2-based tokens.

>Долбоёб, какие именно хедеры, куки и половину параметров ты будешь использовать для аутентификации если не ID сессии?
ID сессии у тебя тоже по пути отвалился, долбоёб?
Апрочем нормальные люди работают с ID юзера, а не сессии потому что проще.

>Так буквально написано что сессии используются для аутентификации API
>Sanctum also exists to provide a simple method of authenticating single page applications (SPAs) that need to communicate with a Laravel powered API.
Ой что это тут у нас. Обещал про аутентификацию API, а принёс про аутентификацию в SPA, КОТОРЫЕ используют API. Ебать неожиданность, только подтвердил мои слова.

>В каком месте она есть, долбоёб?
В методе аутентификации по токену. Да, там можно смотреть в боди запроса, ахуеть до чего технологии дошли.

>Мой пыхафреймворк под капотом зарабатывает деньги, за них покупает какой то CDN о котором я не знаю и втихую роутит через этот CDN запросы?
Суть не в CDN, а втом чтобы запросы апи принимал с определённого хоста. Впрочем если без CDN, то наверняка всё сделано через жопу и с дырами. Дай ссылку, проверю.

>А сессии по твоему - это не способ аутентификации, шизоид?
Долбоёб, ну ты уже не вкуриваешь о чём речь, совсем заманеврировался. Это можно было бы назвать способом аутентификации бека, если ты гарантируешь, что все запросы пройдут через фронтовую аутентификацию. Но при этом на API не должно быть своей аутентификации для таких запросов.
То ты же долбоёб. Ты к API зачем то аутентификацию прикручиваешь и жалуешься, что не получается, лол.
Аноним 06/07/25 Вск 05:13:03 321985622 116
>>321985531
Тип когда тебя обоссывает не человек а робот - менее обидно?
Аноним 06/07/25 Вск 05:26:56 321985723 117
>>321978137 (OP)
> Но я не могу найти туториалов о том как защитить JSON API с помощью сессий.

Так никто не делает, потому что смысла нет и нельзя.
Сессия = кука. Куку надо писать в реквест.
API - программируемый интерфейс.
Если кто-то на той же жабе пишет клент для твоего API, то токен нужно писать в реквесте в хедер. Так что тут разницы нет.
Если API потребляется только с веб страницы, то кука не пишется по умолчанию в XHR реквест, который запрашивает данные с API. Более того, стандартом запрещен доступ из жс к кукам. Тут это работать не будет.
Плюсом к этому, как только ты начинаешь юзать сессии, возникает проблема привязки сессии к инстансу приложения, потому что именно он хранит стейт сессии.
Ну и так далее, чет впадлу дальше расписывать.
Аноним 06/07/25 Вск 05:29:24 321985743 118
говно спок
Аноним 06/07/25 Вск 05:36:03 321985790 119
>>321985723
>Если API потребляется только с веб страницы, то кука не пишется по умолчанию в XHR реквест, который запрашивает данные с API

Всё верно, она пишется явно.

>Более того, стандартом запрещен доступ из жс к кукам.

https://www.w3schools.com/js/js_cookies.asp

У себя в хромиуме попробовал, работает.

>Плюсом к этому, как только ты начинаешь юзать сессии, возникает проблема привязки сессии к инстансу приложения, потому что именно он хранит стейт сессии.

А в чём проблема если инстанс один и нет планов масштабироваться?
Аноним 06/07/25 Вск 05:41:16 321985835 120
>>321985723
Зря распинаешься.
Пчелу похуй на best practices, кука залетит без HttpOnly и т.д.
Аноним 06/07/25 Вск 05:59:16 321985977 121
Аноним 06/07/25 Вск 06:03:56 321986009 122
>>321985977
Пиздец, что тебе ещё не понятно то?
Аноним 06/07/25 Вск 06:20:57 321986151 123
Аноним 06/07/25 Вск 06:36:15 321986279 124
Аноним 06/07/25 Вск 07:32:23 321986813 125
Аноним 06/07/25 Вск 07:55:25 321987153 126
Аноним 06/07/25 Вск 08:11:48 321987432 127
Самое смешное во всём этом это то что оп говорит что 5 лет пишет на пхп и ларавеле. Нет ты не пишешь и не писал даже года. Ты простой челик после курсов или студент начинающий. Никогда ни на чём вообще не писал.

Чтобы понять как и что сделать по-настоящему разберись как работает та или иная технология. Тогда поймёшь.
Аноним 06/07/25 Вск 08:15:57 321987502 128
>>321987432
Я вас умоляю, коллега.
Обычный пыхошлёп, который как обезьянка научился делать одно и то же. А как оно под капотом работает - хуй знает.
Аноним 06/07/25 Вск 08:43:06 321987898 129
>>321987502
Нельзя работать с фреймворком больше года и не заглянуть под капот. Иначе ты не растет, хуевые задачи и проекту фреймворк ненужен вообще.
Аноним 06/07/25 Вск 08:48:42 321987993 130
Аноним 06/07/25 Вск 09:49:33 321989149 131
Бамп
Аноним 06/07/25 Вск 09:59:42 321989349 132
>>321989149
Собираюсь вкатываться в 1с-битрикс. Буду программистом как и ты. Дашь советы?
Аноним 06/07/25 Вск 10:00:19 321989360 133
>>321981322
C# посвежее будет, но ты не вкатишься. Пхп это диагноз
Мимо пхпшник
Аноним 06/07/25 Вск 10:04:23 321989442 134
image1.png 118Кб, 1564x954
1564x954
>>321989360
Я тоже пхпшник. Дай профессиональные советы как от коллеги для коллеги
Аноним 06/07/25 Вск 10:05:56 321989471 135
Аноним 06/07/25 Вск 10:08:07 321989508 136
>>321989471
Ладно, ты прав. Зря я это. На пхп же хуяк-хуяк и готово, какие нахуй советы, лол
Аноним 06/07/25 Вск 10:09:50 321989540 137
>>321989508
Почему у тебя так горит жопа? Я же тебе ничего плохого не сказал даже. Ты сам не сказал начкет чего тебе надо советы
Аноним 06/07/25 Вск 10:24:37 321989851 138
>>321981904
>В Json REST API никаких печенек нет
Ты дурачок штоле? Кука - это хранилще на клиенте, REST никак не нарушает. Обычный http хедер. Как же вы меня уебки заебали, ни одного еще не видел, кто понимает, что такое рест, кука, но все блиать с умным ебалом лепят, ебать куко - это не рест.
Аноним 06/07/25 Вск 10:25:58 321989877 139
>>321982087
>А JSON API это что в твоём понимании?
А В ТВОЕМ ПОНИМАНИИ ЭТО ЧТО БЛИАТЬ???
Аноним 06/07/25 Вск 10:27:15 321989910 140
>>321982542
>простое апи для браузера
>рест
срыгни нахуй макака, дрочи свой жвт до усрачки
Аноним 06/07/25 Вск 10:28:36 321989941 141
>>321982916
>REST
хуест блиать, долбоеб, в очко мамаше своей еще засунь этот рест
Аноним 06/07/25 Вск 10:29:46 321989980 142
>>321983354
>поле "session" прямо в теле твоего джысона и проверяешь ее
уроки секурности от рестоеба, есть еще третий вариант - насрать тебе в рот, что бы больше не говорил всякой хуиты
Аноним 06/07/25 Вск 10:43:14 321990300 143
>>321989941
Хуя подрыв неандертальца, лол.
Аноним 06/07/25 Вск 10:47:23 321990406 144
Untitled12.jpg 8Кб, 225x225
225x225
Аноним 06/07/25 Вск 10:58:40 321990689 145
>>321985312
>Блядь, аутист, там вобще просто сделано что API не требует аутентификации при условии что запрос точно идёт от втоего домена.
Что за шизофрения
Аноним 06/07/25 Вск 11:08:25 321990942 146
image.png 77Кб, 887x1199
887x1199
Как-то так это делалось. Пришлось аж код своего диплома откапывать, потому что хз кто сейчас сессии использует
Аноним 06/07/25 Вск 11:19:58 321991239 147
>>321990942
Не, это не то. `POST /login` же все равно ожидает FormData, а не JSON.
Аноним 06/07/25 Вск 12:35:07 321993616 148
>>321982777
Ты понимаешь, что разницы между передачей токена и передачей JSESSIONID нет? Это одна и та же хуйня
Аноним 06/07/25 Вск 12:43:18 321993899 149
>>321989877
В индустрии, если у тебя JSON API, то это по умолчанию REST.


>>321989851
Потому что кука это браузерная история, которая зачастую не только авторизационные данные хранит, но и другой стейт. Если у тебя API, то он по дефолту предполагает абстрагирование клиента и тащить определение куки в него это некорректно.

Опять же, я смотрю с точки зрения общепринятых практик, никто тебе не запрещает принимать хедер с кукой от другого не веб сервиса, но о тебе просто подумают, что ты долбоёб и не умеешь делать апи
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов