如何在MobileFirst 8 Java Adapters中获取活动用户信息?

时间:2016-06-28 11:01:46

标签: ibm-mobilefirst mobilefirst-adapters

我已经定义了一个扩展UserAuthenticationSecurityCheck class的UserLogin安全检查。一旦用户通过身份验证,我需要在protected AuthenticatedUser createUser()函数中创建用户时设置一些属性,以便稍后将其用作Java适配器中的标头。

我的问题是我无法从@OAuthSecurity(scope = "UserLogin")保护的适配器资源中获取活动用户信息。 我已经尝试在我的securitycheck中定义以下函数:

public AuthenticatedUser getUser() {

        return authorizationContext.getActiveUser();

     }

然后从适配器调用它:

UserLogin userLogin;
logger.info("Logging info message..."+userLogin.getUser().getId());

但它返回一个空指针异常。

我如何从Java Adapters获取活动用户信息?

2 个答案:

答案 0 :(得分:3)

AdapterSecurityContext类提供适配器REST调用的安全上下文。

在Java适配器类中,在类级别添加以下内容:
@Context AdapterSecurityContext securityContext;

然后您可以使用以下方式获取当前的AuthenticatedUser:
AuthenticatedUser currentUser = securityContext.getAuthenticatedUser();

您可以在ResourceAdapter示例中找到一个示例(在交易点下)。

答案 1 :(得分:0)

您可以在UserLogin安全级别的protected AuthenticatedUser createUser()函数中设置属性:

private Map<String, Object> attributes = new HashMap<String, Object>();
    @Override
    protected AuthenticatedUser createUser() {
        return new AuthenticatedUser(userId, displayName, this.getName(),attributes);
    }

您可以使用以下网址获取ResourceAdapter class中的有效用户信息:

@Context
    AdapterSecurityContext securityContext;

public String getActiveUser(){

AuthenticatedUser currentUser = securityContext.getAuthenticatedUser();

return "Active user informations are:" +currentUser.getDisplayName()+" "+currentUser.getAuthenticatedBy()+" "+currentUser.getAttributes()+ " "+currentUser.getAuthenticatedAt();

 }

点击此处了解与Class AuthenticatedUser相关的更多信息。