2011-07-16 23 views
0

私はインターセプタを使用して、ユーザーが有効かどうかを確認しました&もしそうなら、アクションに彼を送ります。ユーザーが呼び出すすべてのアクションで発生する可能性があります。 うまく動作しています&私は望みの結果を得ていますが、唯一の問題はすべてのページのヘッダーにユーザー名を表示したいということです。だから、インターセプターから私が呼び出すすべてのアクションに、または直接JSPにユーザー名のような変数を送ることができる方法はありますか?struts2 - Webアプリケーション内のすべてのページでユーザー名を取得する方法

+0

どうもありがとう:

public String getLoggedInUser() { return ServletActionContext.getRequest().getRemoteUser(); } 

そして、あなたの(JSP)内のあなたが経由で、現在のユーザー名でログインしてアクセスすることができます見てあなたの答えのために。私は私の答えを得た。私はただセッション認識を実装し、今まで必要だったところでセッションオブジェクトを使用する必要があります。 –

+0

これはあまり良い方法ではありません。あなたのアクションはセッションを意識する必要はなく、セッションマップはJSPから直接アクセスできます(すでに値のスタックにあります)。サイトが小さい場合は、各JSPに直接書き込むことができますが、カットアンドペーストすると、より良い方法があると思われます。もっと良い方法は、sitemeshとtiles2です。 – Quaternion

+0

あなたが書いたことは、ユーザー名を表示したいと思っているすべてのアクションでセッション認識を使用していると読んでいます。ここではおそらくログインアクションでしか使用していませんでした。 – Quaternion

答えて

1

あなたは、各リクエストが認証オブジェクトにアクセスできる方法でそれを永続化する必要があります。方法は、セッションにユーザーオブジェクトを格納するか、ユーザーオブジェクトを再度取得できるユーザー名などの識別子を格納することです。

+1

各ページにユーザー名を表示するには、単にプロパティタグを使用します。 Johannes

1

あなたは&アクセスにセッションにすべてのページでセッション値をデータを追加することができます...

0

私はどのライブラリを使用しているのか分かりません。しかし、私は春のセキュリティ

0

別のオプションを使用するときにも動作します。のgetName()

)現在のユーザーのユーザー名を取得するための汎用的な方法は、(httpServletRequest.getUserPrincipalを呼び出すことであると思います。お使いのベースのアクションの追加:

${loggedInUser} 

または

<s:property value="loggedInUser"/> 
関連する問題