下面列出了com.google.inject.servlet.RequestScoped#org.apache.shiro.session.mgt.DefaultSessionManager 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private static SecurityManager createSecurityManager(Ini config, Supplier<String> sessionIdGenerator) {
final Factory<SecurityManager> factory = new IniSecurityManagerFactory(config) {
@Override
protected SecurityManager createDefaultInstance() {
final DefaultSessionManager sessionManager = new DefaultSessionManager();
// This session DAO is required to cache the session in a very short time, especially while
// logging in to the Central Dogma server. After that, the general session manager provided
// by Central Dogma server will be working for the session management.
sessionManager.setSessionDAO(new LimitedMemorySessionDAO(sessionIdGenerator,
64, Duration.ofHours(1)));
final DefaultSecurityManager securityManager = new DefaultSecurityManager();
securityManager.setSessionManager(sessionManager);
return securityManager;
}
};
return factory.getInstance();
}
@Override
protected void bindSessionManager(AnnotatedBindingBuilder<SessionManager> bind) {
bind.to(DefaultSessionManager.class).asEagerSingleton();
bind(DefaultSessionManager.class);
bindConstant().annotatedWith(Names.named("shiro.globalSessionTimeout")).to(globalSessionTimeoutInSecs * 1000L);
bindConstant().annotatedWith(Names.named("shiro.sessionValidationSchedulerEnabled")).to(false);
}
@Bean
@ConditionalOnMissingBean
public DefaultSessionManager defaultSessionManager() {
DefaultSessionManager manager = new DefaultSessionManager();
// 关闭session定时检查
manager.setSessionValidationSchedulerEnabled(false);
return manager;
}
protected SessionDAO getSessionDAO() {
final SecurityManager securityManager = SecurityUtils.getSecurityManager();
if(securityManager instanceof SessionsSecurityManager) {
final SessionManager sessionManager = ((SessionsSecurityManager) securityManager).getSessionManager();
if(sessionManager instanceof DefaultSessionManager) {
return ((DefaultSessionManager) sessionManager).getSessionDAO();
}
}
return null;
}
public TelegramLongPollingSessionBot(ChatIdConverter chatIdConverter){
this.setSessionManager(new DefaultSessionManager());
this.setChatIdConverter(chatIdConverter);
AbstractSessionDAO sessionDAO = (AbstractSessionDAO) sessionManager.getSessionDAO();
sessionDAO.setSessionIdGenerator(chatIdConverter);
}
public void setSessionManager(DefaultSessionManager sessionManager) {
this.sessionManager = sessionManager;
}
public SessionDAO getSessionDAO() {
if(sessionDAO == null)
sessionDAO = ((DefaultSessionManager) ((DefaultSecurityManager) SecurityUtils.getSecurityManager()).getSessionManager()).getSessionDAO();
return sessionDAO;
}