forum.bitel.ru http://forum.bitel.ru/ |
|
Сброс сессий при удачной аутентификации http://forum.bitel.ru/viewtopic.php?f=19&t=7261 |
Страница 1 из 1 |
Автор: | beetle [ 02 окт 2012, 00:41 ] |
Заголовок сообщения: | Сброс сессий при удачной аутентификации |
Ситуация. Имеется несколько NASов для доступа в сеть пользователей. Если висит ограничение в одну сессию на логин, то пользователь не завершивший сессию на одном и пытаясь залогиниться на другом получает отказ. Стандартно сделан сброс сессий если пришел верный запрос на авторизацию с того-же Calling-Station-Id (опция check.duplicate.session=1 в настройках NASa). Но пользователи часто (всегда практически) оставляют одну сессию на ноуте, а с планшетом пытаются зайти повторно и уже не с дома. При такой ситуации Calling-Station-Id отличаются. Как можно скриптом реализовать сброс всех существующих сессий, если он пытается залогиниться с другого устройства (конечно при условии, что аутентификация прошла успешно). Спасибо. |
Автор: | Phricker [ 02 окт 2012, 01:06 ] |
Заголовок сообщения: | Re: Сброс сессий при удачной аутентификации |
И тут вдруг оказывается что дома роутер, а он пытается подключиться с планшета... Кто-кого и надолго ли хватит ![]() |
Автор: | Phricker [ 02 окт 2012, 01:07 ] |
Заголовок сообщения: | Re: Сброс сессий при удачной аутентификации |
http://wiki.bgbilling.ru/index.php/Доп._действие_сброса_активных_соединений Для 5.1 правда. Но можно переписать для 5.2 и повесить на радиус авторизацию. Но я бы не стал этого делать. Лучше все таки если хочет сбросить - зашел в ЛК и сбросил |
Автор: | beetle [ 02 окт 2012, 03:06 ] |
Заголовок сообщения: | Re: Сброс сессий при удачной аутентификации |
Да, лучше чтоб сбрасывали с личного кабинета, но в итоге на сотку пользователей звонят в сапорт 90. Исследования показали, что минироуторев все меньше, а вот мобольных устройств стремится по 2 штуки на персону. В общем я тоже за личный кабинет, но при массовом внедрении и унификации доступа через кабельную сеть дома и wifi по городу получается геморно. Ссылку с вики видел, но не знаком с java и тем более api bgbs. Если подправить пару строк, то помогите. Если требует серьезной доработки то дайте знать, буду разбираться. |
Автор: | beetle [ 06 дек 2012, 00:46 ] |
Заголовок сообщения: | Re: Сброс сессий при удачной аутентификации |
Вот функция, если кому нужно, устанавливается также как и тут. Один минус, при превышении лимита пользователь получит ошибку авторизации т.е. войдет со второй попытки. Код: import bitel.billing.server.call.bean.Login;
import bitel.billing.server.radius.*; import bitel.billing.server.contract.bean.*; import bitel.billing.server.script.event.*; import bitel.billing.server.dialup.bean.busevent.*; import bitel.billing.common.*; import bitel.billing.server.util.*; import ru.bitel.bgbilling.server.util.*; import ru.bitel.bgbilling.kernel.event.*; import java.sql.*; import java.util.*; int MID = 1; // код модуля public void onEvent( event, setup, con, conSlave ) { contractId = event.getContractID(); errCode = event.getErrorCode(); if( errCode == 21 ) // если ошибка превышения лимита сессий { int count = 0; String tableName = ServerUtils.getModuleMonthTableName( "log_session", new java.util.Date(), MID ); if( ServerUtils.tableExists( con, tableName ) ) { String query = "SELECT session.id FROM " + tableName + " AS session " + "INNER JOIN user_login_" + MID + " AS login ON session.lid=login.id AND login.cid=? " + "WHERE session.status=0"; PreparedStatement ps = con.prepareStatement( query ); ps.setInt( 1, contractId ); ResultSet rs = ps.executeQuery(); while( rs.next() ) { int recordId = rs.getInt( 1 ); count++; EventProcessor.getInstance().publish( new DialupSessionBreakEvent( MID, recordId ) ); // непосредственно киляет сессии } } } } |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |