2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OutSystemsでセッションタイムアウトをアプリケーション側で制御する

Posted at

OutSystemsのセッションタイムアウト時間の変更は、通常は、ASP.NETの設定ファイル(machine.configかweb.config)で行われます。
しかし、トラブルシュート等のために開発側のエンジニアだけで変更したいこともあると思います。
今回はそういう目的に使えるForgeのコンポーネントを紹介します。

簡単なロジックなので、Visual Studioさえあれば、Forgeをインストールできない環境でも同じExtensionが作れるはずです。

動作確認環境

Personal Environment(Version 11.7.3 (Build 5968))
Service Studio(Version 11.6.30)
Browser Session Timeout(Version 2.0.1)

Forgeコンポーネント

Browser Session Timeout
https://www.outsystems.com/forge/component-overview/1365/browser-session-timeout
C#で書かれたExtensionです。

この記事中で出てくるAction名はこのコンポーネントのものです。

タイムアウト値を変更する

現在のセッションのタイムアウト値を変更する、SetSessionTimeOut Actionを使います。
パラメータは、現在のセッションに設定したいタイムアウト値を分数で指定します。このタイムアウト分の時間、リクエストをしないでいると、そのセッションはタイムアウトです。

qSessionTimeout1.PNG

1分でタイムアウトさせる例。

現在のセッションのタイムアウト値を確認するときは、GetSessionTimeOut Action。

即座にセッションを無効にする

パラメータのないClearSession Actionを呼ぶとセッション変数をクリアし、ユーザーをログアウトさせます。

実際にScreen Actionをこのように作ってテストしてみました。
qSessionTimeout2.PNG

すると、ClearSession呼び出し直後では、GetUserIdがログインユーザーのIdを返す(=普通はログイン中を表す)。
ただ、その後(Preparationが動いた後)、ちゃんとSecurityExceptionが発生し、Session変数もクリアされていました。ドキュメントからはわかりませんが、タイムラグがあるのかもしれません。

C#のソースコードを確認してみる

各Actionに対応するC#のコードの主な部分を抜粋してみます。
.NETのSystem.Web.HttpContext.Current.Session.Timeoutに対する薄いラッパとして作成されているようです。

SetSessionTimeOut(ssMinutesはInput Parameterの分単位のタイムアウト時間)

HttpContext.Current.Session.Timeout = ssMinutes;

GetSessionTimeOut(ssMinutesはOutput Parameter)

ssMinutes = HttpContext.Current.Session.Timeout;

ClearTimeOut

HttpContext.Current.Session.Clear();

無効にしたのに、次のアクセスでSecurity Exceptionが起きない?

Persistent Loginを有効にしていると、タイムアウト発生後の次のアクセスで自動的に再ログインされてしまい、Security Exceptionが発生しないようです。
Security Exception発生時のトラブルシュートでこの機能を利用する場合はご注意ください。

(Persistent LoginはCookieを使って、一定期間はユーザーのログインを維持させる仕組みです。
標準のログイン画面では、「Remember me」のチェックボックスを入れておくとこの機能を使ってログインされます)

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?