[ 2329 ] [Struts2]サーブレットリクエスト(HttpServletRequest)

Struts2のActionはサーブレットではないですが、
元はHttpServietRequestを取っていますので、Struts2のコンテキスト経由で
取得することができます。

やはり得意のActionContext

取り方:
HttpServletRequest request = ServletActionContext.getRequest();

これでそのリクエストのリクエスト属性を取得できます。
スレッドセーフなので特に何も気にしません(ω・ )

リクエスト属性が取得できるので、もちろん認証情報も取得することができます。
JAASにのっとった値をAPI経由で、今までと同様に取得できます。

リクエスト属性経由の認証情報

リクエスト属性経由の認証情報は、ActionContextから取得したリクエスト属性経由で
メソッド起動して取得してもいいんですが、Struts2では取得用のインターセプタを提供してくれています。

それはPrincipalProxyインタフェースで、
Actionクラスにて、PrincipalAwareを実装することでメソッドを利用することができます。

ProxyAwareの実装例

public class RoleSampleAction extends ActionSupport implements PrincipalAware {
  …
  public void setPrincipalProxy(PrincipalProxy principalProxy) {
    this.principalProxy = principalProxy;
  }

  private PrincipalProxy principalProxy;

  public String execute() throws Exception {
    log.debug("* execute *:" + principalProxy.getRemoteUser());
    return "success";
  }
}

PrincipalProxyを格納するプロパティと、setterを実装するだけです。



loading...