Java 当用户登录BlazeDS时,如何将属性设置为FlexSession?
在我的应用程序中,我希望在用户登录时,在其会话中存储一些有关用户的数据。它将从数据库中检索,并通过调用FlexSession.setAttribute'age',n放置在FlexSession中。我将Tomcat与JDBC领域一起使用。问题是,当用户使用其登录名和密码进行身份验证时,如何在FlexSession中放置一些数据 我知道有一个flex.messaging.security.LoginManager.javaJava 当用户登录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
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");
}
}