[GWT] GWTとRealm認証
(0)
(0)
(0)
(0)
Total: 0
サーブレットコンテナのRealm認証をGWTで利用したい場合、注意が必要だ。
通常、web.xmlに以下のように書いて、認証エリアを指定すると思うが、GWTで認証を利用したい場合、Ajax通信先のURLも認証エリアに指定する必要がある。URLは、web.xmlの中ののどこかに記載されているハズだ。
私の場合は、Ajax通信するまえのHTMLはちゃんと認証が掛って、正しいIDでログインしているにも関わらず、Ajax通信先のURLを認証エリアに指定していなかったために、Principal情報を取得できませんでした。
<web-resource-collection>
<web-resource-name>SobaEducationPortal</web-resource-name>
<url-pattern>/secure/*</url-pattern>
<!– ↓この指定を忘れるとうまくいかない –>
<url-pattern>/ajax/*</url-pattern>
</web-resource-collection>
この設定さえできてしまえば、Servlet側のプログラムは簡単だ。
RemoteServiceServletの拡張クラスで、getThreadLocalRequest()を利用しHttpServletRequestのインスタンスを取得すると後は、通常通りPrincipal情報を取得する事ができる。
HttpServletRequest request = this.getThreadLocalRequest();
Principal principal = request.getUserPrincipal();











