phdbutbachelor commented on issue #1950:
URL: https://github.com/apache/shiro/issues/1950#issuecomment-2585520777

   Here are the beans:
   
   ```
   @Bean
   public ModularRealmAuthenticator authenticator(
           AuthenticationListener authenticationListener,
           ConfigUserAuthorizingRealm configUserAuthorizingRealm,
           UsernamePasswordAuthorizingRealm usernamePasswordAuthorizingRealm,
           SMSAuthorizingRealm smsAuthorizingRealm,
           WxMaPhoneNumberAuthorizingRealm wxMaPhoneNumberAuthorizingRealm
   ) {
       ModularRealmAuthenticator _authenticator = new 
DefaultModularRealmAuthenticator(configUserAuthorizingRealm, 
usernamePasswordAuthorizingRealm, smsAuthorizingRealm, 
wxMaPhoneNumberAuthorizingRealm);
   
       _authenticator.setAuthenticationStrategy(new FirstSuccessfulStrategy());
       
_authenticator.setAuthenticationListeners(Collections.singletonList(authenticationListener));
       return _authenticator;
   }
   
   @Bean
   public SessionManager sessionManager(
           SessionDAO sessionDAO,
           ShiroConfigurationProperties shiroConfigurationProperties,
           SessionListenerAdapter sessionListenerAdapter
   ) {
       DefaultWebSessionManager _sessionManager = new 
DefaultWebSessionManager();
   
       // 设置cookie
       
_sessionManager.setSessionIdCookie(shiroConfigurationProperties.getSessionIdCookie());
       _sessionManager.setSessionIdUrlRewritingEnabled(false);
   
       _sessionManager.setSessionDAO(sessionDAO);
   
       // 设置session过期时间
       
_sessionManager.setGlobalSessionTimeout(shiroConfigurationProperties.getSession().getTimeout()
 * 1000);
       // 设置session验证间隔
       
_sessionManager.setSessionValidationInterval(shiroConfigurationProperties.getSession().getValidationInterval()
 * 1000);
       // 设置session监听器
       
_sessionManager.setSessionListeners(Collections.singletonList(sessionListenerAdapter));
   
       return _sessionManager;
   }
   
   @Bean
   public DefaultWebSecurityManager securityManager(
           ConfigUserAuthorizingRealm configUserAuthorizingRealm,
           UsernamePasswordAuthorizingRealm usernamePasswordAuthorizingRealm,
           SMSAuthorizingRealm smsAuthorizingRealm,
           WxMaPhoneNumberAuthorizingRealm wxMaPhoneNumberAuthorizingRealm,
           ModularRealmAuthenticator authenticator,
           ModularRealmAuthorizer authorizer,
           SessionManager sessionManager,
           CacheManager cacheManager,
           RememberMeManager rememberMeManager
   ) {
       DefaultWebSecurityManager _manager = new DefaultWebSecurityManager();
   
       authenticator.setAuthenticationStrategy(new FirstSuccessfulStrategy());
       _manager.setAuthenticator(authenticator);
   
       _manager.setAuthorizer(authorizer);
   
       // 设置认证域
       _manager.setRealms(Arrays.asList(configUserAuthorizingRealm, 
usernamePasswordAuthorizingRealm, smsAuthorizingRealm, 
wxMaPhoneNumberAuthorizingRealm));
   
       // 设置会话管理器
       _manager.setSessionManager(sessionManager);
   
       // 设置缓存管理器
       _manager.setCacheManager(cacheManager);
   
       // 设置记住管理器
       _manager.setRememberMeManager(rememberMeManager);
   
       return _manager;
   }
   
   @Bean
   @ConditionalOnMissingBean
   public ShiroFilterFactoryBean 
shiroFilterFactoryBean(@Value("${sec.username}") String username, 
@Value("${sec.login.url}") String loginUrl, 
org.apache.shiro.mgt.SecurityManager securityManager, 
ShiroConfigurationProperties shiroConfigurationProperties, LoginUtil loginUtil) 
{
       ShiroFilterFactoryBean _filterFactory = new ShiroFilterFactoryBean();
       _filterFactory.setSecurityManager(securityManager);
       Map<String, Filter> _filters = new LinkedHashMap();
       _filters.put("user", new DefaultAuthenticationFilter(username, loginUrl, 
loginUtil));
       _filterFactory.setFilters(_filters);
       
_filterFactory.setFilterChainDefinitionMap(shiroConfigurationProperties.getFilterChainDefinitionMap());
       return _filterFactory;
   }
   
   @Bean
   @ConditionalOnMissingBean
   public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
       return new LifecycleBeanPostProcessor();
   }
   
   @Bean
   @ConditionalOnMissingBean
   public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
       DefaultAdvisorAutoProxyCreator _creator = new 
DefaultAdvisorAutoProxyCreator();
       _creator.setProxyTargetClass(true);
       return _creator;
   }
   
   @Bean
   @ConditionalOnMissingBean
   public AuthorizationAttributeSourceAdvisor 
authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
       AuthorizationAttributeSourceAdvisor _advisor = new 
AuthorizationAttributeSourceAdvisor();
       _advisor.setSecurityManager(securityManager);
       return _advisor;
   }
   ```
   
   And the filter chain definition map is:
   
   ```
     filter-chain-definition:
       - /sec/login/cancel, user
       - /sec/login/**, anon
       - /error, anon
       - /app/init, anon
       - /app/layout/header, anon
       - /media/read, anon
       - /media/read/force-partial-content, anon
       - /util/cmpassport/app-id, anon
       - /util/validation/jquery, anon
       - /llm/chat, anon
   ```
   
   the url '/llm/chat' is set to 'anon'. @fpapon 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to