Repository navigation
OTR_ScreenTransition
nishi_74322014 edited this page Nov 1, 2026
·
2 revisions
Web Forms での画面遷移の方法と、不正な画面遷移を検出する画面遷移制御機能。ASP.NET Web Forms 専用(MVC・Windows Forms には無い)。
| 方法 | 書き方 | 定義ファイル |
|---|---|---|
| イベント処理の戻り値 |
return "遷移先.aspx";(空文字ならポストバック) |
不要 |
| 直接遷移 |
this.FxTransfer(url)(Server.Transfer)/this.FxRedirect(url)(Response.Redirect) |
不要 |
| 論理名で遷移(+チェック) | this.ScreenTransition("遷移ラベル") |
SCDefinition.xml が必要 |
| Redirect | Transfer | |
|---|---|---|
| URL | 変わる(画面と URL が 1 対 1) | 変わらない |
| リロード時 | GET を再送 | POST を再送(二重送信に注意) |
| 情報の持ち回り | Session |
HttpContext.Items・Hidden(同一リクエスト内) |
| 性能 | 往復が 1 回増える | 有利 |
- 既定は Redirect が素直である。Transfer は性能では有利だが、URL のずれと二重送信のリスクがある。
- 戻り値で遷移するときの方法(Transfer / Redirect)は、設定
ScreenTransitionMethod(1= Transfer、2= Redirect)で決まる。


- 図の Redirect には
301 Moved Permanentlyとあるが、Response.Redirectの既定は302 Foundである。
定義に無い遷移や、直リンク禁止の画面への GET アクセスを FrameworkException で拒否する。
URL を直打ちして業務の途中から入る、といった操作を防ぐ。コードから呼ぶ API は無く、設定を ON にすれば自動でチェックする。
<add key="FxScreenTransitionMode" value="T"/> <!-- 主スイッチ:T / R / off -->
<add key="FxScreenTransitionCheck" value="on"/> <!-- 不正遷移チェック:on / off -->
<add key="FxXMLSCDefinition" value="...\SCDefinition.xml"/>- 主スイッチ
FxScreenTransitionModeがoffだと、FxScreenTransitionCheckの値に関わらずチェックは走らない。
<SCD>
<Screen value="/Aspx/menu.aspx" directLink="allow">
<Transition value="/Aspx/input.aspx" label="toInput" mode="R"/>
</Screen>
<Screen value="/Aspx/input.aspx" directLink="deny">
<Transition value="/Aspx/confirm.aspx" label="toConfirm" mode="T"/>
</Screen>
<CmnTransition value="/Aspx/menu.aspx" label="toMenu" mode="R"/>
</SCD>| 要素・属性 | 内容 |
|---|---|
Screen の directLink
|
GET による直リンクを許可(allow)/拒否(deny) |
Transition |
その画面から遷移できる先と、ラベル・方法(T = Transfer、R = Redirect) |
CmnTransition |
どの画面からでも使える共通の遷移 |
- 冒頭に DTD を埋め込む(Open 棟梁の XML 定義ファイルに共通の作法)。
- CSRF 対策としても、GET 防止(
directLink="deny")が使える(脆弱性対策のポイント)。
Transfer は無い。RedirectToAction などで遷移し、不正遷移の防止は認可やルーティングで行う。
- スキル
opentouryo-screen-transitionを使わせる。 - 画面遷移制御・不正操作防止・キャッシュ無効化は三点セットで設計する(不正操作防止)。
Tags: 再構築
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。