イントラマートでログインユーザーとクライアントIPを取得する

2018-02-07イントラマート

イントラマートでログインユーザーとクライアント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アドレス、ユーザー名が表示されます。)

株式会社システムトラスト

イントラマートの導入・開発についてなど気軽にご相談ください。

お問合せ