日時がずれていてログインができない

[事象]
ログインを行おうとすると、認証期間が有効期限切れですというエラーメッセージが表示されてログインできない。

[原因]
認証期間をクッキーに持たせる仕様となっていた。
クッキーに設定していた日付は、業務がアプリケーションで用いている業務用の日付(正確には日時)を用いていた。
一方、認証側ではシステム日時を用いていた為、多少ずれがあったため有効期限切れとみなされた。

[対応]
そもそも、システム的な箇所に、業務用の日付を使うべきではない。
もし使わないといけないのであれば、システム日付部分も業務用の日付にするなど整合性を一致させないといけない。
(どこかで破綻する可能性は非常に高いが・・・)

[補足]
業務用の日付を用いる場合に気をつけること。
・利用しているのが、システム日付なのか業務用の日付なのかを把握しておく必要がある。
 またどこで業務用の日付が使われているのかを確認しておく。
・業務用の日付にはN+1、休日は繰り越して計算している日付なども含まれる場合は考えられるので、その違いもきちんと確認しておくこと。
 問題ないのであれば名称にその様な分かりやすい名前を付与しておいた方が良い。

日時を扱う場合に気をつけること。
・テストで簡単に変えれる様にしておいた方がよい。
 (業務用の日付を使う・使わないに限らず)
・日付跨った場合の取り扱いを確認しておく。
 (25,26時なのか、翌日として扱うのか)
トランザクション開始日時、コミット日時などシステム的に重要な日時をどう取得するか(揃えるか、リアルタイムにするか)を決めておく。
・祝日が変わる場合があるので、官報(暦要項)は意識しておくこと。2月最初の平日に発表される。

システム設計のセオリー --ユーザー要求を正しく実装へつなぐ

システム設計のセオリー --ユーザー要求を正しく実装へつなぐ

システム設計の謎を解く 強いSEになるための、機能設計/入出力設計の極意

システム設計の謎を解く 強いSEになるための、機能設計/入出力設計の極意