В CAS-протоколе нет ничего, что позволяло бы запрашивать у сервера список текущих активных заявок.
Я предполагаю, что вы используете Jasig CAS в качестве сервера. Я думаю, вы могли бы добавить представление, контроллер и объект домена, внедренный в текущий реестр билетов, и просто вызвать TicketRegistry.getTickets(), чтобы получить все билеты (включая просроченные). Вам все равно придется вызывать getAuthentication для реализации Ticket (он существует как в ServiceTicket, так и в ServiceGrantingTicket, но я не смог найти его ни в одном суперклассе или интерфейсе), а затем Authentication.getPrincipal().
Я не знаю, будет ли список PrincipalS, который вы получите, содержать дубликаты, но на вашем месте я бы проверил такие дубликаты.
CAS — это приложение Spring, поэтому в первую очередь нужно искать этот материал в cas-server-webapp/src/main/webapp/WEB-INF/cas-servlet.xml.
Боюсь, я не могу сделать больше, не зная точной реализации CAS, которую вы будете использовать.
cas-server-webapp — это приложение spring-mvc, поэтому вы можете найти много информации в документации Spring — обратите внимание, что поскольку CAS 3.1 использует версию 2 Spring, вам следует посмотреть http://docs.spring.io/spring-framework/docs/2.5.3/reference/ .
Ниже приводится только схема того, что можно сделать, и это непроверенный материал, который может содержать опечатки или другие ошибки. Кроме того, нет интерфейсов, а имя представления жестко закодировано, что не рекомендуется в реальном мире. Его следует воспринимать таким, какой он есть: упрощенным скелетным примером возможной реализации.
Объект домена (необязательно)
private TicketRegistry ticketRegistry;
public class LoggedUsersService {
public List<what_you_want> getLoggedInUsers() {
List<Principal> userList; // or List<Authentication> or ...
// extract pricipal list from ticketRegistry
...
return userList;
}
public void setTicketRegistry(TicketRegistry ticketRegistry) {
this.ticketRegistry = ticketRegistry);
}
}
Он должен быть объявлен в deployerConfigContext.xml
<bean id="loggedUserService" class="path_to/LoggerUserService">
<property name="ticketRegistry" ref="ticketRegistry"/>
</bean>
Это необязательно, потому что вы можете делать это прямо в контроллере... но разделение упрощает тесты.
Контроллер
private LoggedUsersService loggedUsersService;
public class LoggedUserController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav = new ModelAndView();
// set view name and optionaly whant you need to do
mav.setViewName("loggedusers")
mav.addObject("userList", loggedUserService.getLoggedInUsers());
return mav;
}
public void setLoggedUsersService(LoggedUserService loggedUsersService) {
this.loggedUsersService = loggedUsersService;
}
}
Он должен быть объявлен в cas-servlet.xml
и включен в сопоставление обработчика.
<bean id="loggedUserController" class="path_to/LoggerUserService">
<property name="ticketRegistry" ref="ticketRegistry"/>
</bean>
<bean id="handlerMappingC"
...
<props>
...
<prop key="/loggedUsers">loggedUsersController</prop>
</props>
...
</bean>
Вид
Затем в вашем loggedusers.jsp
вы можете получить доступ к списку пользователей под именем bean-компонента "userList" в области запроса.
<jsp:useBean id="userList" scope="request"/>
person
Serge Ballesta
schedule
29.04.2014
Principal
на основе связанного с нимTicket
. - person AdjustingForInflation   schedule 25.04.2014