0

私の Java EE アプリケーションでは、次の安らかなクラスを宣言します。

@Path("userProfile")
@Stateless
public class UserProfileRestful {

   @Resource
   private SessionContext sessionContext;

   @Path("userName")
   @GET
   @Produces(MediaType.Text_Palin)
   public String findCurrentUserName(){
      return sessionContext.getCallerPrincipal.getName();
   }

}

任意のクライアントを介して現在ログインしているユーザーのユーザー名を取得することを目指しています。

ユーザー名「myuser」でログインした後、新しいタブで次の URL を Web ブラウザーに貼り付けました。

http://localhost:8080/MyApp/rest/userProfile/userName

表示された応答は期待どおりでした:「myuser」。

ここで、次のように Ajax リクエストを実行して、別の ExtJS アプリケーション (認証を必要としない) 内からそのユーザー名を取得しようとしました。

Ext.Ajax.Request({
   url : "http://localhost:8080/MyApp/rest/userProfile/userName",
   success : function(response,options){
      alert('username : ' + response.responseText);
   },
   failure : function(){
      alert('request failed');
   }

});

同じセッション中に「myuser」としてログインしているにもかかわらず、アラートの結果は「ANONYMOUS」でした。

では、2 番目のケースで呼び出し元のプリンシパルが変更されるのはなぜですか?また、その解決策はありますか?

4

1 に答える 1