2016-06-28 9 views
0

UserAuthenticationSecurityCheck classを拡張したUserLoginセキュリティチェックを定義しました。ユーザーが認証されると、protected AuthenticatedUser createUser()関数でユーザーを作成するときに、Javaアダプタのヘッダーとして後で使用するために、いくつかの属性を設定する必要があります。MobileFirst 8 Javaアダプタでアクティブなユーザー情報を取得するにはどうすればよいですか?

私の問題は、@OAuthSecurity(scope = "UserLogin")で保護されたアダプタリソースからアクティブユーザー情報を取得できないということです。 私はsecuritycheckに次の関数を定義しようとしている。その後、

public AuthenticatedUser getUser() { 

     return authorizationContext.getActiveUser(); 

    } 

とアダプターからこの方法でそれを呼び出す:

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

をしかし、それはnullポインタ例外を返します。

Javaアダプタからアクティブなユーザー情報を取得する方法を教えてください。

答えて

2

AdapterSecurityContextクラスは、アダプタのREST呼び出しのセキュリティコンテキストを提供します。お使いのJavaアダプタクラス内

、クラスレベルで次の行を追加します。
@Context AdapterSecurityContext securityContext;

あなたはその後、使用して現在のAuthenticatedUserを得ることができます。
AuthenticatedUser currentUser = securityContext.getAuthenticatedUser();

あなたはResourceAdapterサンプルの例を見つけることができます( 取引 enpoint)。

+0

また、私はそのオプションを試しましたが、AdapterSecurityContextやAdaptersAPIなどの@Contextに含まれるすべてのAPIが自分のコード内でNullポインタ例外を発生させることを確認しました。 –

0

あなたはuserloginのセキュリティクラスのprotected AuthenticatedUser createUser()機能で自分の属性を設定することができます

@Context 
    AdapterSecurityContext securityContext; 

public String getActiveUser(){ 

AuthenticatedUser currentUser = securityContext.getAuthenticatedUser(); 

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

} 

クリックして、ここに関連する詳細については:

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

は、あなたが使用してResourceAdapter classでアクティブなユーザー情報を取得することができますClass AuthenticatedUser

関連する問題