Java 当用户登录BlazeDS时,如何将属性设置为FlexSession?

Java 当用户登录BlazeDS时,如何将属性设置为FlexSession?,java,tomcat,blazeds,Java,Tomcat,Blazeds,在我的应用程序中,我希望在用户登录时,在其会话中存储一些有关用户的数据。它将从数据库中检索,并通过调用FlexSession.setAttribute'age',n放置在FlexSession中。我将Tomcat与JDBC领域一起使用。问题是,当用户使用其登录名和密码进行身份验证时,如何在FlexSession中放置一些数据 我知道有一个flex.messaging.security.LoginManager.java if (username != null && crede

在我的应用程序中,我希望在用户登录时,在其会话中存储一些有关用户的数据。它将从数据库中检索,并通过调用FlexSession.setAttribute'age',n放置在FlexSession中。我将Tomcat与JDBC领域一起使用。问题是,当用户使用其登录名和密码进行身份验证时,如何在FlexSession中放置一些数据

我知道有一个flex.messaging.security.LoginManager.java

 if (username != null && credentials != null)
            {
                Principal authenticated = loginCommand.doAuthentication(username, credentials);

                if (authenticated == null) // Invalid login.
                {
                    SecurityException se = new SecurityException();
                    se.setMessage(INVALID_LOGIN);
                    se.setCode(SecurityException.CLIENT_AUTHENTICATION_CODE);
                    throw se;
                }
                setCurrentPrincipal(authenticated);
            }
但是我不确定我是否可以轻松地覆盖它,因为管理器是在MessageBroker实现中实例化的。因此,我只需要找到FlexSession的创建位置,使用用户名和密码,并设置一些其他属性

或者我可以使用FlexSessionListener,添加

FlexSession.addSessionCreatedListener(new CustomFlexSessionListener());
但是去哪里呢

期待着您的想法。谢谢。

这里的解决方案:。 需要在服务配置文件中创建并指定新的引导服务:

<service id="listener" class="test.ListenersBootstrapService" />     
在哪里

class MyFlexSessionListener implements FlexSessionListener { 

    public void sessionCreated(FlexSession session) 
    { 
        System.out.println("FlexSession created: " + session.getId()); 
        session.setAttribute("gender", "male");     
    } 
} 
非常感谢这篇文章的作者

但是,问题是FlexContext.getUserPrincipal或session.getUserPrincipal返回null,这可能是因为首先创建了会话,然后进行了身份验证。需要找到侦听userPrincipal上的属性更改事件的方法。

好的,我想我找到了:,使用引导服务
class MyFlexSessionListener implements FlexSessionListener { 

    public void sessionCreated(FlexSession session) 
    { 
        System.out.println("FlexSession created: " + session.getId()); 
        session.setAttribute("gender", "male");     
    } 
}