2013-07-16 5 views
0

Я заметил, что даже в качестве анонимного пользователя создается сеанс сиро (и вставлен в мой db в моем случае) при моем первом доступе к веб-странице. После успешного входа в систему запись сеанса просто обновляется с соответствующими атрибутами.Shiro session creation flooding

Теперь я пытался «стресс-тестирование» на главной странице URL с:

curl -s "http://myapp.com?[1-1000]" 

И мой страх сбылся, как я рассчитывать созданный сеанс так же, как петля.

Итак, вопрос в том, есть ли в любом случае я могу избежать создания сеанса, созданного веб-искателем или спамером?

ответ

1

Это работает для меня, где, позволяющие создать сеанс только после входа в систему, yayy:

/login = authc 
/logout = noSessionCreation, logout 
/** = noSessionCreation, anon 
+0

Я подозреваю, что вы получили ответ на свой вопрос после того, как я дал ответ, который позволил вам написать свой образец кода :( –

+0

@LesHazlewood: Привет, автору. Просто хочу прояснить, что мой ответ на 2 дня раньше от вашего Ответы в SO не сортируются по дате, поэтому могут возникнуть ошибочные предположения. – bertie

+0

мои извинения! Спасибо за разъяснение! –

1

Принятое решение будет сгенерировано исключение (как и ожидалось), если разработчик (или программное обеспечение рамок/библиотека) пытается создать сеанс на этих страницах. Это, как правило, «хорошая вещь», поскольку в ходе разработки будет показано непредвиденное использование сеанса, гарантируя, что разработчики (или веб-фреймворки, которые вы используете) не создают сеансы, когда они не должны.

Если вы используете JSP-страницы, вы также, вероятно, хотите установить

<%@ page session="false" %> 

В верхней части JSP, чтобы гарантировать, что библиотеки тегов или сам контейнер сервлетов не пытаться использовать сессии (вас удивляйтесь, как часто это происходит без вашего ведома).

+0

Мне очень жаль, что я забыл упомянуть, что я использую пользовательский и родной сеанс, поэтому его не влияет на веб-сеансы.К счастью, что в этом случае я использую freemarker вместо JSP. Спасибо. – bertie

+0

@AlbertKam звучит хорошо - так что да, я думаю, использование фильтра 'NoSessionCreation' в вашем случае - лучший способ пойти , –