0

ZK と Spring Security を使用したアプリがあります。春のセキュリティメカニズムを介してアプリケーションにログインしました。インデックス ページには、動的に作成されるコンポーネントがいくつかあります。「A」コンポーネントにはクリックリスナーがあります。

***point1**
userComponent = new A("link");
userComponent.addEventListener(Events.ON_CLICK, new EventListener<Event>() {    
    public void onEvent(Event event) throws Exception {        
        **point2**
        //do something with current user    
    }
});

ポイント1では、現在のユーザーを取得しようとしてAuthentication authentication = SecurityContextHolder.getContext().getAuthentication();います。完璧に機能し、ログに記録されたユーザーを受け取ります。しかし、point2 SecurityContextHolder.getContext().getAuthentication()ではnull が返されます。クリックイベントで現在のユーザーを取得するには?

スタック トレースが役立つ場合があります。point2 へのスタックトレースに SecurityFilters が表示されない

これは point1 へのスタック トレースですhttp://pastebin.com/raw.php?i=k4EhXrAi point2 への スタック トレースhttp://pastebin.com/raw.php?i=v1mbfbwi

4

1 に答える 1

2

イベント イベント ハンドラーに一致する URL に対して空のフィルター チェーンを定義したようです (この行が 2 番目のスタック トレースに含まれていることからわかります)。そうです、リクエストは Spring Security をバイパスしているため、現在のユーザー情報を取得しません。次の行に沿ってメッセージが表示されるため、デバッグ ログから明らかなはずです。

空のフィルター リストがある、一致するフィルターがありません

構成を見ないと、それが何であるかを正確に言うのは難しいですが (zk については何も知りません)、ブラウザーからの要求を簡単にデバッグし、それらをデバッグログ出力と照合して、どのように詳細に説明するかを確認できるはずです。それらは処理されます。

Ajax 呼び出しが使用する構成と URL を投稿すると、正確な回答が得やすくなります。

于 2013-02-24T21:15:14.647 に答える