イントラマートでログインユーザーとクライアントIPを取得する
イントラマートでログインユーザーとクライアントIPを取得する方法です。
イントラマートとは
株式会社NTTデータイントラマート社が開発・販売している、Webアプリケーションシステムのシステム共通基盤(統合型フレームワーク)で、国内の著名企業を中心に6,000社以上に導入されています。
イントラマートを導入することにより、Webシステム開発における短納期・低コスト・標準化推進・品質向上を実現できます。
詳しくはこちらをご覧ください。
イントラマートでログインユーザーとクライアントIPを取得する
通常はファンクションコンテナでクライアントIPアドレスは「Web.getRemoteAddr()」、ログインユーザー名は「Module.client.get(“name")」で取得できますが、それをSQLSrverのストアドプロシジャーでやってみます。
イントラマートのセッション情報を管理しているテーブル覗き見
実現するにはイントラマートが管理しているセッション情報を覗き見します。
該当テーブルはb_m_active_session_infoです。
DECLARE @my_cd VARCHAR(50) = 'XXXXXX' --ログインユーザーコード SELECT a.remote_addr AS remote_addr --クライアントのIPアドレス ,b.user_name AS user_name --ユーザー名 FROM b_m_active_session_info AS a ,b_m_user_t_i AS b WHERE a.user_cd = @my_cd AND a.user_cd=b.user_cd AND a.login_time = ( SELECT MAX(login_time) FROM b_m_active_session_info WHERE user_cd = @my_cd )
@my_cdにはログインしたユーザーコードを設定します。
ログインをした状態でブラウザーの「×」ボタンでブラウザーを終了した場合はしばらくb_m_active_session_infoにログインユーザーのセッション情報が残り、直後に再ログインをすると複数件取得されるので、ログイン時間の最新のものだけを取得します。
実行結果は
remote_addr user_name 127.0.0.1 イントラマート太郎
になります。
(実際はログインしたマシンのIPアドレス、ユーザー名が表示されます。)