Status
こんにちは、ゲストさん
データベースに接続できませんでした。
アプリケーション
test.kymg.win.kymg.win
このシェルは認証状態をヘッダーで共有し、CSRF保護されたログアウトのみを提供します。
認証技術仕様
リクエストフロー
- index.php → Func_App() が全
Func_*をロードし、Func_App_HandleJwtRedirect()で?kym_token=を受け取った際に Secure/Lax Cookie へ保存します。 - Func_App() は
Func_Session_GetAuthState()を呼び出し、結果をauth_stateに載せた上でルーティング・描画を進めます。 - 描画後は
Func_Page_Main()がヘッダー・オフキャンバスへ同じauth_stateを共有し、各 UI スロットから再読込なしで状態を参照できます。
JWT / セッション
Func_Auth_VerifyJwt()は Base64URL デコード、HS256 署名、exp/iat(AUTH_JWT_CLOCK_SKEWで猶予)、iss=AUTH_JWT_EXPECTED_ISS、aud=AUTH_JWT_EXPECTED_AUDを順にチェックします。- 検証シークレットは
Func_Auth_GetJwtSecret()がkym_auth.auth_settings_msからjwt_secretを取得し、失敗時のみAUTH_SHARED_SECRETにフォールバックします。 - 成功した payload は
is_authenticated/userへ整形され静的にキャッシュされるため、同一リクエスト内での追加検証は発生しません。
CSRF / ログアウト
Func_Csrf_GenToken()が hidden input を発行し、ログアウト POST はFunc_Csrf_ValidToken()を通過しない限り破棄されます。Func_View_Logout()→Func_Session_ClearAuthState()がkym_tokenCookie を即失効させ、PHP セッション ID も再発行します。- ヘッダー/オフキャンバスのボタンは
auth_stateを唯一のデータソースとしているため、ログアウト後の再描画だけで反映されます。
JavaScript / UI 制御
bodyにはclass="layout-shell is-authenticated|is-guest"とdata-auth-state="authenticated|guest"が必ず付与されます。- ボタンやリンクをログイン必須にする場合は
.requires-authを付与すると、CSS と JS 双方で一括制御できます。 - 追加の権限制御が必要な場合でも
document.body.dataset.authStateだけを参照すれば整合性を保てます。 - トーストやモーダルなどの即時フィードバックは、同じ状態値を見て挙動を切り替えるように統一してください。
実装例
const isAuthenticated = document.body.dataset.authState === 'authenticated';
const saveBtn = document.querySelector('[data-feature="save"]');
if (!isAuthenticated && saveBtn) {
saveBtn.classList.add('requires-auth');
saveBtn.addEventListener('click', (event) => {
event.preventDefault();
alert('ログインすると保存できます');
}, { once: true });
}
UI 側ではこの状態値以外に権限ロジックを持たせず、サーバーの auth_state を単一ソース・オブ・トゥルースにしてください。
モジュール 1
ダミーカード 1
この領域はスクロール挙動の確認用に配置したダミーコンテンツです。任意のメトリクスやログイン後の情報をここに展開できます。
モジュール 2
ダミーカード 2
この領域はスクロール挙動の確認用に配置したダミーコンテンツです。任意のメトリクスやログイン後の情報をここに展開できます。
モジュール 3
ダミーカード 3
この領域はスクロール挙動の確認用に配置したダミーコンテンツです。任意のメトリクスやログイン後の情報をここに展開できます。
モジュール 4
ダミーカード 4
この領域はスクロール挙動の確認用に配置したダミーコンテンツです。任意のメトリクスやログイン後の情報をここに展開できます。
モジュール 5
ダミーカード 5
この領域はスクロール挙動の確認用に配置したダミーコンテンツです。任意のメトリクスやログイン後の情報をここに展開できます。
モジュール 6
ダミーカード 6
この領域はスクロール挙動の確認用に配置したダミーコンテンツです。任意のメトリクスやログイン後の情報をここに展開できます。
モジュール 7
ダミーカード 7
この領域はスクロール挙動の確認用に配置したダミーコンテンツです。任意のメトリクスやログイン後の情報をここに展開できます。
モジュール 8
ダミーカード 8
この領域はスクロール挙動の確認用に配置したダミーコンテンツです。任意のメトリクスやログイン後の情報をここに展開できます。