Найдите ниже мой подход, протестированный на установке cas-maven-overlay
с cas-версией на 5.3.x
. Некоторые вещи могут отличаться в cas 6 ветке, но я предполагаю, что основная идея остается.
Во-первых, мы должны создать класс Action, который будет внедрен в поток входа в систему и добавит желаемое сообщение в область действия потока, чтобы оно было доступно в шаблоне (представление).
public class DailyMessageAction extends AbstractAction{
@Override
protected Event doExecute(RequestContext context) throws Exception {
context.getFlowScope().asMap().put("dailyMessage", "YOUR_AWESOME_MESSAGE");
return success();
}
}
Затем создайте класс WebflowConfigurer
и добавьте наш недавно созданный DailyMessageAction
в список действий (см. Метод doInitialize
).
public class DailyMessageWebflowConfigurer extends AbstractCasWebflowConfigurer{
final Action dailyMessageAction;
public DailyMessageWebflowConfigurer(FlowBuilderServices flowBuilderServices,
FlowDefinitionRegistry flowDefinitionRegistry,
ApplicationContext applicationContext,
CasConfigurationProperties casProperties,Action dailyMessageAction){
super(flowBuilderServices, flowDefinitionRegistry, applicationContext, casProperties);
this.dailyMessageAction = dailyMessageAction;
}
@Override
protected void doInitialize() {
final Flow flow = super.getLoginFlow();
flow.getStartActionList().add(dailyMessageAction);
}
}
После этого мы должны ввести DailyMessageWebflowConfigurer
во время выполнения cas. Это достигается созданием класса конфигурации и внедрением нашего конфигуратора.
@Configuration
public class CustomWebflowConfiguration {
@Autowired
private CasConfigurationProperties casProperties;
@Autowired
@Qualifier("loginFlowRegistry")
private FlowDefinitionRegistry loginFlowDefinitionRegistry;
@Autowired
private ApplicationContext applicationContext;
@Autowired
private FlowBuilderServices flowBuilderServices;
@RefreshScope
@ConditionalOnMissingBean(name = "dailyMessageAction")
@Bean
public Action dailyMessageAction(){
return new DailyMessageAction();
}
@ConditionalOnMissingBean(name = "dailyMessageWebflowConfigurer")
@Bean
@RefreshScope
public CasWebflowConfigurer dailyMessageWebflowConfigurer(){
final DailyMessageWebflowConfigurer w = new DailyMessageWebflowConfigurer(flowBuilderServices,
loginFlowDefinitionRegistry,
applicationContext,
casProperties,
dailyMessageAction());
w.initialize();
return w;
}
}
Включите наш CustomWebflowConfiguration
класс в META-INF/spring.factories
:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=your_package.CustomWebflowConfiguration
Последний шаг - представить добавленное сообщение в виде. Достигается добавлением этой строки
<div th:utext="${dailyMessage}"></div>
в файле templates/casLoginView.html
.